阿里雲搭建Hadoop集羣

1 前言

在講述Hadoop集羣搭建以前,首先要了解Hadoop和集羣兩個名詞,Hadoop是由Apache基金會開發的分佈式系統基礎架構,簡單理解就是大數據技術應用的基礎。集羣能夠理解爲多臺裝有hadoop的服務器。搭建Hadoop集羣的目的就是爲了管理多臺服務器,使多臺服務器之間可以協調工做。本文選擇了3臺阿里雲服務器。從下圖中能夠對整個大數據架構有了大致的瞭解。java

hadoop框架

Hadoop主要有HDFS(分佈式文件存儲系統)、Yarn(集羣資源管理與調度)和MapReduce(分佈式計算框架)組成。Hadoop集羣中分爲主機(master)和從機(slave),本文配置一臺阿里雲服務器爲主機和從機。其他兩臺爲從機。HDFS(分佈式文件存儲系統)在主機上稱爲Namenode節點,在從機上稱爲Datanode節點。Namenode維護HDFS的文件系統樹以及文件樹中全部的文件和文件夾的元數據。能夠理解爲win系統中文件夾屬性中的那些信息,Datanode是存儲和檢索數據的地方。能夠理解爲win系統中文件夾中實際數據。node

img

Yarn(集羣資源管理與調度)在主機上稱爲ResourceManager節點,在從機上稱爲NodeManager。ResourceManager是全局的資源管理器,負責整個系統的資源管理和分配,NodeManager是節點上的資源和任務管理器。定時地向ResourceManager彙報本節點的資源使用狀況。linux

MapReduce(分佈式計算框架)顧名思義就是計算框架,有啥特色呢,就是分佈式,能夠把大型數據處理任務分解成不少單個簡單的任務,而後再把各個處理結果合在一塊兒。計算過程能夠百度瞭解。web

2 Hadoop集羣搭建

image-20200920203945226

2.1 服務器系統設置

網上教程多采用虛擬機建立多個linux系統來搭建Hadoop集羣,我以爲虛擬機有弊端就採用了阿里雲服務器。阿里雲服務器購買選配過程後續再介紹。數據庫

  • hosts文件修改

hosts是一個沒有擴展名的系統文件,其基本做用就是將一些經常使用的網址域名與其對應的 IP 地址創建一個關聯「 數據庫 」。當用戶在瀏覽器中輸入一個須要登陸的網址時,系統會首先自動從hosts文件中尋找對應的 IP 地址,一旦找到,系統就會當即打開對應網頁,若是沒有找到,則系統會將網址提交 DNS 域名解析服務器進行 IP 地址的解析。就如你訪問本地的時候,你輸入127.0.0.1和localhost是一致的。hosts文件修改就是在添加三臺服務器IP和域名的映射。apache

vi /etc/hosts

添加一下映射瀏覽器

172.27.66.8 master
172.27.66.10 slave1
172.27.66.9 slave2

後續訪問域名和訪問IP的效果是同樣的。服務器

按照IP地址修改三臺服務器的主機名微信

hostnamectl set-hostname master
hostnamectl set-hostname slave1
hostnamectl set-hostname slave2
  • SSH免密登陸

SSH免密登陸是爲了各個服務器之間訪問不在須要密碼。三臺服務器分別執行一遍以下命令。執行完該命令會在root/.ssh下生成密鑰。架構

ssh-keygen -t rsa
#在slave1和slave2下分別把id_rsa.pub發送到主機上,並從新命令
scp id_rsa.pub root@master:~/.ssh/id_rsa.pub.slave1
scp id_rsa.pub root@master:~/.ssh/id_rsa.pub.slave2

在主機root/.ssh下把id_rsa.pub、id_rsa.pub.slave一、id_rsa.pub.slave2追加到authorized_keys中。

cat id_rsa.pub >> authorized_keys 
cat id_rsa.pub.slave1 >> authorized_keys 
cat id_rsa.pub.slave2 >> authorized_keys

而後把authorized_keys傳回到slave1和slave2中

scp authorized_keys root@slave1:~/.ssh 
scp authorized_keys root@slave2:~/.ssh

最後修改文件權限。

chmod 755 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

2.2 Hadoop安裝

hadoop各組件軟件下載地址:

清華鏡像:https://mirrors.tuna.tsinghua...

  • 各模塊配置文件修改

Hadoop的版本爲3.2.1,軟件包hadoop-3.2.1.tar.gz解壓到/usr/local下,

tar -zxvf hadoop-3.2.1.tar.gz

安裝完成後進入/usr/local/hadoop-3.2.1/etc/hadoop,修改配置文件爲:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml、workers,

#打開文件的命令
vi core-site.xml

core-site.xml在<configuration> ----</configuration>之間添加以下配置,注意修改hadoop.tmp.dir路徑(按照本身系統的路徑)

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop-3.2.1/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>
</configuration>

hdfs-site.xml在<configuration> ----</configuration>之間添加以下配置,注意修改dfs.datanode.data.dir和dfs.namenode.name.dir路徑。dfs.replication副本參數。同datanode個數。

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop-3.2.1/hdfs/namenode</value>
    </property>

    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop-3.2.1/hdfs/datanode</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>

    <property>
      <name>dfs.permissions</name>
      <value>false</value>
      <description>need not permissions</description>
    </property>

    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>
</configuration>

yarn-site.xml在<configuration> ----</configuration>之間添加以下配置。

<configuration>
<!-- Site specific YARN configuration properties -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <property>
        <description>The address of the applications manager interface in the RM.</description>
        <name>yarn.resourcemanager.address</name>
        <value>${yarn.resourcemanager.hostname}:8032</value>
    </property>

    <property>
        <description>The address of the scheduler interface.</description>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>${yarn.resourcemanager.hostname}:8030</value>
    </property>

   <property>
        <description>The http address of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>${yarn.resourcemanager.hostname}:18088</value>
   </property>

   <property>
        <description>The https adddress of the RM web application.</description>
        <name>yarn.resourcemanager.webapp.https.address</name>
        <value>${yarn.resourcemanager.hostname}:18090</value>
   </property>

   <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>${yarn.resourcemanager.hostname}:8031</value>
   </property>

   <property>
        <description>The address of the RM admin interface.</description>
        <name>yarn.resourcemanager.admin.address</name>
        <value>${yarn.resourcemanager.hostname}:8033</value>
   </property>

   <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

mapred-site.xml在<configuration> ----</configuration>之間添加以下配置。

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
 
    <property>
      <name>mapred.job.tracker</name>
      <value>master:9001</value>
    </property>
</configuration>

workers下添加以下內容。

slave1
slave2
  • 環境變量設置

hadoop-env.sh、yarn-env.sh兩個文件下,添加java的地址,環境變量的目的就是爲了便於訪問。

export JAVA_HOME=/usr/local/jdk1.8.0_261

hadoop配置

2.3 JDK8安裝

java的版本爲jdk-8u261-linux-x64.tar.gz,解壓到/usr/local下

tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local

設置環境變量

vi /etc/profile
#添加以下內容
JAVA_HOME=/usr/local/jdk1.8.0_261
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
#當即生效環境變量
source /etc/profile

2.4 hadoop集羣測試

#將主機下配置好的hadoop文件總體發送到兩個從機上
scp -r /usr/local/hadoop-3.2.1 root@slave1:/usr/local
scp -r /usr/local/hadoop-3.2.1 root@slave2:/usr/local

#添加hadoop的環境變量
export HADOOP_HOME=/usr/local/hadoop-3.2.1
export PATH="$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

#在主機下格式化namenode
/usr/local/hadoop-3.1.1/bin/hdfs namenode -format
#啓動和關閉HDFS
start-dfs.sh
stop-dfs.sh
#啓動和關閉yarn
start-yarn.sh
stop-yarn.sh
#啓動所有
start-all.sh
stop-all.sh

啓動集羣后在主機上輸入jps顯示

image-20200921002010963

在從機上輸入jps顯示

image-20200921001913315

輸入hdfs dfsadmin -report顯示

image-20200921002259868

總結

Hadoop集羣搭建,按照步驟一步一步搭建,難度不大。

不求點贊 只求有用

本文由微信公衆號《大數據分析師知識分享》發佈
相關文章
相關標籤/搜索