天天看點

Hadoop學習--搭建hadoop叢集1.安裝環境 2.安裝前準備3.安裝配置Hadoop 4.初始化及運作

目錄

1.安裝環境 

2.安裝前準備

3.安裝配置Hadoop

4.初始化及運作

1.安裝環境 

本部落格所安裝的hadoop隻有HDFS、YARN以及MapReduce元件,不包含Hadoop其他元件的安裝。

1)準備4台虛拟機(CentOS 7),ip與主機名如下:

  • 192.168.134.128 master
  • 192.168.134.129 slave1
  • 192.168.134.130 slave2
  • 192.168.134.131 slave3

主機規劃: 192.168.134.128做master,運作NameNode和ResourceManager程序。其他三台主機做slave,運作DataNode和NodeManager程序。

2)Java版本:jdk1.8.0_141

3)Hadoop版本:hadoop-2.9.2

2.安裝前準備

第1、2步使用root使用者執行,3、4步使用grid使用者執行。

1)分别在4台機器上建立grid使用者

#建立使用者grid,主目錄為/home/grid,如果該目錄不存在則建立

useradd -d /home/grid

#将grid使用者添加到root組

usermod -a -G root grid

2)分别在四台機器上的/etc/hosts/檔案中添加如下内容,用做域名解析

192.168.134.128 master

192.168.134.129 slave1

192.168.134.130 slave2

192.168.134.131 slave3

3)分别在4台機器上安裝java

tar -zxvf [java壓縮包目錄] -C [解壓到的目标路徑] 

4)配置ssh免密登陸

這裡配置任意兩台機器之間都可以免密登陸

①分别在4台機器上生成密鑰對,注意這裡需要在4台機器上都執行。

#進入grid使用者的主目錄

cd ~

#生成密鑰對

ssh-keygen -t rsa

然後一路按Enter鍵。

②在master上執行

#進入.ssh

cd ~/.ssh/

#把本機的公鑰追加到自身的~/.ssh/authorized_keys檔案裡

ssh-copy-id master

#将authorized_keys檔案複制到slave1主機

scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/

③在slave1上執行

cd ~/.ssh/

ssh-copy-id slave1

scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/

④在slave2上執行

cd ~/.ssh/

ssh-copy-id slave2

scp /home/grid/.ssh/authorized_keys slave3:/home/grid/.ssh/

⑤在slave3上執行

cd ~/.ssh/

ssh-copy-id slave3

#此時authorized_keys檔案中已經包含所有4台主機的公鑰,将它複制到其他3台主機

scp /home/grid/.ssh/authorized_keys master:/home/grid/.ssh/

scp /home/grid/.ssh/authorized_keys slave1:/home/grid/.ssh/

scp /home/grid/.ssh/authorized_keys slave2:/home/grid/.ssh/

到這裡ssh的免密登陸就配置完成了。

3.安裝配置Hadoop

以下操作均使用grid使用者在master主機上執行

1)安裝hadoop

cd  ~

tar  -zxvf  ~/upload/hadoop-2.9.2.tar.gz  -C  ~/

2)建立目錄

cd  ~/hadoop-2.9.2

mkdir  tmp

mkdir  hdfs

mkdir  hdfs/name

mkdir hdfs/data

3)修改配置檔案

①編輯~/home/grid/hadoop-2.9.2/etc/hadoop/core-site.xml檔案,添加如下内容:

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>file:///home/grid/hadoop-2.9.2/tmp</value>

</property>

<property>

<name>io.file.buffer.size</name>

<value>131072</value>

</property>

</configuration>

說明:core-site.xml是Hadoop的全局配置檔案,這裡配置了三個參數

  • fs.defaultFS:預設檔案系統的名稱,URI形式,預設是本地檔案系統,這裡配置了使用HDFS檔案系統,namenode在master上
  • hadoop.tmp.dir:Hadoop的臨時目錄,其他目錄會基于此路徑,是本地目錄。
  • io.file.buffer.size:在讀寫檔案時使用的緩存大小。這個大小應該是記憶體Page的倍數。

②編輯~/home/grid/hadoop-2.9.2/etc/hadoop/hdfs-site.xml檔案,添加如下内容:

<configuration>

<property>

 <name>dfs.namenode.name.dir</name>

 <value>file:///home/grid/hadoop-2.9.2/hdfs/name</value>

</property>

<property>

 <name>dfs.datanode.data.dir</name>

 <value>file:///home/grid/hadoop-2.9.2/hdfs/data</value>

</property>

<property>

 <name>dfs.replication</name>

 <value>3</value>

</property>

<property>

 <name>dfs.namenode.secondary.http-address</name>

 <value>master:9001</value>

</property>

<property>

 <name>dfs.namenode.servicerpc-address</name>

 <value>master:10000</value>

</property>

<property>

 <name>dfs.webhdfs.enabled</name>

 <value>true</value>

</property>

</configuration>

 說明:hdfs-site.xml是HDFS的配置檔案,這裡配置了6個參數。

  • dfs.namenode.name.dir:本地磁盤目錄,用于NameNode存儲FSImage檔案。
  • dfs.datanode.data.dir:本地磁盤目錄,HDFS存儲資料塊的地方。
  • dfs.replication:資料塊副本數。
  • dfs.namenode.secondary.http-address:SecondaryNameNode的HTTP服務位址。
  • dfs.namenode.servicerpc-address:HDFS服務通信的RPC位址。如果設定該值,備份節點、資料節點和其他服務将會連接配接到指定位址。
  • dfs.webhdfs.enabled:指定是否在NameNode和DataNode上開啟WebHDFS功能。

③ 編輯~/home/grid/hadoop-2.9.2/etc/hadoop/yarn-site.xml檔案,添加如下内容:

<configuration>

<property>

 <name>yarn.nodemanager.aux-services</name>

 <value>mapreduce_shuffle</value>

</property>

<property>

 <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

 <value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

 <name>yarn.resourcemanager.address</name>

 <value>master:8032</value>

</property>

<property>

 <name>yarn.resourcemanager.scheduler.address</name>

 <value>master:8030</value>

</property>

<property>

 <name>yarn.resourcemanager.resource-tracker.address</name>

 <value>master:8031</value>

</property>

<property>

 <name>yarn.resourcemanager.admin.address</name>

 <value>master:8033</value>

</property>

<property>

 <name>yarn.resourcemanager.webapp.address</name>

 <value>master:8088</value>

</property>

<property>

 <name>yarn.nodemanager.resource.memory-mb</name>

 <value>1024</value>

</property>

</configuration>

 說明:yarn-site.xml是YARN的配置檔案,這裡配置了8個參數。

  • yarn.nodemanager.aux-services:NodeManager上運作的附屬服務。需配置成mapreduce_shuffle,才可以運作MapReduce程式。
  • yarn.nodemanager.aux-services.mapreduce_shuffle.class:對應參考yarn.nodemanager.aux-services。
  • yarn.resourcemanager.address:ResourceManager對用戶端暴露的位址。用戶端通過該位址向RM送出應用程式,殺死應用程式等。
  • yarn.resourcemanager.scheduler.address:排程器位址,是ResourceManager對ApplicationMaster暴露的通路位址。ApplicationMaster通過該位址向RM申請資源,釋放資源等。
  • yarn.resourcemanager.resource-tracker.address:ResourceManager對NodeManager暴露的位址。NodeManager通過該位址向RM彙報心跳,領取任務等。
  • yarn.resourcemanager.admin.address:ResourceManager對管理者暴露的通路位址,管理者通過該位址向RM發送管理指令等。
  • yarn.resourcemanager.webapp.address:ResourceManager對外Web UI位址,使用者可以通過該位址在浏覽器中檢視叢集各類資訊。
  • yarn.nodemanager.resource.memory-mb:NodeManager總的可用實體記憶體,不能小于1024,注意,該參數一旦設定,整個運作過程中不可以動态修改。

④  編輯~/home/grid/hadoop-2.9.2/etc/hadoop/mapred-site.xml檔案,添加如下内容:

<configuration>

<property>

 <name>mapreduce.framework.name</name>

 <value>yarn</value>

</property>

<property>

 <name>mapreduce.jobhistory.address</name>

 <value>master:10020</value>

</property>

<property>

 <name>mapreduce.jobhistory.webapp.address</name>

 <value>master:19888</value>

</property>

</configuration>

 說明:mapred-site.xml是MapReduce的配置檔案,這裡配置了三個參數:

  • mapreduce.framework.name:設定MapReduce的執行架構為yarn
  • mapreduce.jobhistory.address:MapReduce的曆史伺服器的位置
  • mapreduce.jobhistory.webapp.address:MapReduce曆史伺服器Web UI位址

⑤ 編輯~/home/grid/hadoop-2.9.2/etc/hadoop/slaves檔案,添加如下内容:

192.168.134.129

192.168.134.130

192.168.134.131

 說明:配置Hadoop叢集中的所有slave

⑥編輯~/home/grid/hadoop-2.9.2/etc/hadoop/hadoop-env.sh檔案,添加如下内容:

export JAVA_HOME=/home/grid/jdk1.8.0_141

⑦編輯~/home/grid/hadoop-2.9.2/etc/hadoop/yarn-env.sh檔案,添加如下内容:

export JAVA_HOME=/home/grid/jdk1.8.0_141

4)将hadoop主目錄複制到各個從伺服器上

scp  -r  ~/hadoop-2.9.2  slave1:/home/grid/

scp  -r  ~/hadoop-2.9.2  slave2:/home/grid/

scp  -r  ~/hadoop-2.9.2  slave3:/home/grid/

該操作的目的主要是使剛才在master主機上修改的配置檔案在其他主機上生效。

5)配置環境變量

使用root使用者分别在4台機器上的/etc/profile檔案中添加如下環境變量:

#java

export JAVA_HOME=/home/grid/jdk1.8.0_141

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#hadoop

export HADOOP_HOME=/home/grid/hadoop-2.9.2

export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

使環境變量生效:

source  /etc/profile

 4.初始化及運作

以下的操作均使用grid使用者在master主機上執行

#格式化HDFS,注意這裡隻能格式化一次,不能多次格式化

hdfs  namenode  -format

#啟動HDFS

start-dfs.sh

#啟動yarn

start-yarn.sh

執行成功後,使用jps指令檢視master節點上的java程序,可以看到主節點上啟動了NameNode、SecondaryNameNode、ResourceManager程序,如下所示:

Hadoop學習--搭建hadoop叢集1.安裝環境 2.安裝前準備3.安裝配置Hadoop 4.初始化及運作

在slave節點上執行jps指令可以檢視slave節點上的程序,可以看到slave節點上啟動了DataNode、NodeManager程序,如下所示:

Hadoop學習--搭建hadoop叢集1.安裝環境 2.安裝前準備3.安裝配置Hadoop 4.初始化及運作

你還可以通過master節點的web接口來檢視叢集狀态,輸入網址:http://192.168.134.128:50070,可以看到如下:

Hadoop學習--搭建hadoop叢集1.安裝環境 2.安裝前準備3.安裝配置Hadoop 4.初始化及運作

到這裡,就大功告成啦啦啦啦!!!撒花!!!

繼續閱讀