目錄
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程序,如下所示:
在slave節點上執行jps指令可以檢視slave節點上的程序,可以看到slave節點上啟動了DataNode、NodeManager程序,如下所示:
你還可以通過master節點的web接口來檢視叢集狀态,輸入網址:http://192.168.134.128:50070,可以看到如下:
到這裡,就大功告成啦啦啦啦!!!撒花!!!