實驗環境:本操作說明適合502機房和504機房
首先要運行Vmware WorkStation或Virtual Box,啟動master完全分布式,slave1完全分布式,slave2完全分布式三臺虛
擬機,用XShell遠程連接master,slave1,slave2,如果連接不成功,參考《502機房主機win7系統與Vmare虛擬機Linux系統的網路連接配置操作說明》完成網路連接配置,三臺虛擬機的IP地址如下:
192.168.56.10 master
192.168.56.11 slave1
192.168.56.12 slave2
第1步:先在第一個臺虛擬機master執行以下操作,再依次在slave1和slave2重復相同的操作:
1)執行cd /usr/local/ 切換到安裝目錄
2)執行mv hadoop-2.6.0-cdh5.7.0/ hadoop-2.6.0-cdh5.7.0.bak 備份掉之前的Hadoop 或 執行 rm -rf hadoop-2.6.0-cdh5.7.0/ 洗掉掉之前的Hadoop
3)執行cd 切換到/root目錄 再執行tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C /usr/local/ 解壓縮Hadoop安裝包到/usr/local/目錄
注意:不要同時三臺虛擬機執行解壓縮操作,會造成Vmware卡死
第2步:先在第一個臺虛擬機master執行以下操作,再依次在slave1和slave2重復相同的操作:
1)執行命令 vi /etc/hostname 將主機名修改為master 修改后執行hostname查看主機名應為master,如果新主機名未生效就reboot重啟一下虛擬機即可
2)執行命令 vi /etc/hosts 最后三修行改成
192.168.56.10 master
192.168.56.11 slave1
192.168.56.12 slave2
3) 執行命令 vi /etc/profile 在profile檔案末尾增加JAVA_HOME和HADOOP_HOME環境變數:
#jdk
export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
#hadoop
export HADOOP_HOME=/usr/local/hadoop-2.6.0-cdh5.7.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
還必須執行命令 source /etc/profile 使得環境變數設定生效
依次執行 echo $JAVA_HOME 和 echo $HADOOP_HOME 兩個命令,測驗一下環境變數是否生效
4)執行關閉防火墻命令 systemctl disable firewalld 再執行關閉SeLinux命令 setenforce 0
第3步:設定master、slave1和slave2互相之間的SSH免密登錄,先在第一個臺虛擬機master執行以下操作,再依次在slave1和slave2重復相同的操作:
1)執行ssh-keygen命令,遇到提示直接回車,需要按多次回車,最后會生成生成一個公鑰和私鑰的密鑰對,出現一個虛線矩形框說明密鑰對生成成功
2)執行ssh-copy-id master命令,遇到提示輸入密碼root,把公鑰發送到要進行SSH免密登錄的目標主機master
3)執行ssh-copy-id slave1命令,遇到提示輸入密碼root,把公鑰發送到要進行SSH免密登錄的目標主機slave1
4)執行ssh-copy-id slave2命令,遇到提示輸入密碼root,把公鑰發送到要進行SSH免密登錄的目標主機slave2
5)執行ssh master,測驗能否SSH免密登錄master主機,如果能不輸入密碼自動登錄成功,說明SSH免密登錄設定成功,登錄成功后記得執行exit退出回話
6)執行ssh master,測驗能否SSH免密登錄master主機,如果能不輸入密碼自動登錄成功,說明SSH免密登錄設定成功,登錄成功后記得執行exit退出回話
7)執行ssh master,測驗能否SSH免密登錄master主機,如果能不輸入密碼自動登錄成功,說明SSH免密登錄設定成功,登錄成功后記得執行exit退出回話
注意:本步驟非常重要,一定要確保三臺主機互相之間都能夠SSH免密登錄成功,一共要測驗9次!
第4步:重要操作,修改HDFS的組態檔,注意本步驟只需要在master主機執行即可
1)修改hadoop-env.sh檔案
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行vi hadoop-env.sh 檔案末尾增加以下環境變數:
export JAVA_HOME=/usr/local/java/jdk1.8
export HADOOP_CONF_DIR=/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop
執行 source hadoop-env.sh 使得環境變數設定生效
2)修改core-site.xml檔案
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行 vi core-site.xml
在<configuration> </configuration>之間間增加配置引數:
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hdfs/tmp</value>
</property>
3)修改hdfs-site.xml檔案
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行 vi hdfs-site.xml
在<configuration> </configuration>之間間增加配置引數:
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hdfs/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hdfs/tmp/dfs/data</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
4)修改slaves檔案
執行vi slaves
洗掉掉localhost,添加以下兩行內容:
slave1
slave2
5)將master主機的三個組態檔hadoop-env.sh,core-site.xml,hdfs-site.xml slaves通過scp遠程拷貝到另外兩臺虛擬機slave1和slave2
先執行scp hadoop-env.sh core-site.xml hdfs-site.xml slaves root@slave1:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 遠程拷貝到slave1
再執行scp hadoop-env.sh core-site.xml hdfs-site.xml slaves root@slave2:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 遠程拷貝到slave2
6)再依次到slave1和slave2兩個虛擬機執行以下相同操作:
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行 source hadoop-env.sh 使得環境變數設定生效
第5步:先在第一個臺虛擬機master執行以下操作,再依次在slave1和slave2重復相同的操作:
1)創建HDFS存放資料的本地目錄
如果/root/hdfs/tmp目錄不存在,執行mkdir -p /root/hdfs/tmp 創建此路徑,如果存在可以跳過此步驟
如果/root/hdfs/tmp目錄已存在,執行cd /root/hdfs/tmp/ 切換到/root/hdfs/tmp目錄
小心執行洗掉命令 rm -rf /root/hdfs/tmp/* 洗掉/root/hdfs/tmp/下面的所有檔案
第6步:格式化HDFS檔案系統
注意:首次啟動HDFS集群之前,必須先格式化HDFS檔案系統,請注意只需要master主機執行格式化,千萬不要在slave1, slave2重復執行格式化命令
只在master主機執行格式化命令 hdfs namenode -format
格式化成功后會輸出提示資訊: Storage directory /root/hdfs/tmp/dfs/name has been successfully formatted.
第7步:啟動HDFS集群
1)在master主機執行腳本start-dfs.sh啟動HDFS集群(在任意一臺虛擬機執行啟動命令start-dfs.sh都可以,只需要執行一次)
2)在master主機執行java行程查看命令jps
[root@master ~]# jps
3616 Jps
3400 NameNode
3)在slave1主機執行java行程查看命令jps
[root@slave1 ~]# jps
2226 DataNode
2356 Jps
2277 SecondaryNameNode
4)在slave2主機執行java行程查看命令jps
[root@slave2 ~]# jps
2984 Jps
2911 DataNode
說明:三臺主機分別顯示以上行程,說明HDFS集群啟動成功(每臺主機上運行的行程名稱必須正確,行程編號可以不同)
======================從第9步開始執行資源管理器YARN的配置和啟動============================
第9步:修改YARN的組態檔(注意本步驟只需要在master主機執行即可)
1)修改mapred-site.xml組態檔
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行cp mapred-site.xml.template mapred-site.xml 復制mapred-site.xml.template模板檔案為一個新的組態檔mapred-site.xml
執行 vi mapred-site.xml
在<configuration> </configuration>之間增加以下配置引數:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
2)修改yarn-site.xml組態檔
執行cd /usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 切換到Hadoop組態檔所在路徑
執行vi yarn-site.xml
在<configuration> </configuration>之間增加以下配置引數:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
3)將master主機的兩個組態檔mapred-site.xml和yarn-site.xml通過scp遠程拷貝到另外兩臺虛擬機slave1和slave2
先執行scp hadoop-env.sh mapred-site.xml yarn-site.xml root@slave1:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 遠程拷貝到slave1
再執行scp hadoop-env.sh mapred-site.xml yarn-site.xml root@slave2:/usr/local/hadoop-2.6.0-cdh5.7.0/etc/hadoop 遠程拷貝到slave2
第10步:啟動資源協調器YARN
1)在master主機執行腳本start-yarn.sh啟動YARN(在任意一臺虛擬機執行啟動命令start-yarn.sh都可以,只需要執行一次)
2)在master主機執行java行程查看命令jps
[root@master ~]# jps
3460 Jps
3205 ResourceManager
2281 NameNode
3)在slave1主機執行java行程查看命令jps
[root@slave1 ~]# jps
2487 NodeManager
2168 DataNode
2218 SecondaryNameNode
2603 Jps
4)在slave2主機執行java行程查看命令jps
[root@slave2 ~]# jps
2774 DataNode
2922 NodeManager
3038 Jps
說明:三臺主機分別顯示以上行程,說明說明HDFS和YARN都啟動成功(每臺主機上的行程名稱必須正確,行程編號可以不同)
5)打開YARN的自帶Web配置頁面
在win7下chorme瀏覽器打開http://192.168.56.10:8088/
第11步:執行MapReduce詞頻統計實體程式(在任意一臺虛擬機執行本步驟都可以)
1)上傳要執行統計的文本檔案
執行命令 hadoop fs -mkdir /input 在HDFS創建一個/input目錄
執行命令 hadoop fs -put /root/word.txt /input 上傳本地Linux檔案系統的一個文本檔案word.txt 到HDFS檔案系統的/input目錄
執行命令hadoop fs -ls /input 和 hadoop fs -cat /input/word.txt查看已上傳到HDFS的文本檔案word.txt
2)執行詞頻統計程式wordcount
切換到MapReduce實體程式所在目錄 cd /usr/local/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce
執行命令hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/word.txt /output
請注意輸出目錄/output不能已存在,執行上面命令后會自動創建/output目錄
3)查看詞頻統計程式wordcount的執行結果
先執行命令 hadoop fs -ls /output 查看HDFS的/output目錄的內容,應該出現以下內容:
Found 2 items
-rw-r--r-- 1 root supergroup 0 2020-09-25 23:32 /output/_SUCCESS
-rw-r--r-- 1 root supergroup 1306 2020-09-25 23:32 /output/part-r-00000
wordcount運行結果會輸出到檔案output/part-r-00000中,執行命令:
hadoop fs -cat /output/part-r-00000 查看詞頻統計程式wordcount的執行結果,輸出結果類似以下內容:
details 1
distribution 2
eligible 1
encryption 3
exception 1
則說明MapReduce詞頻統計程式wordcount運行正確
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/168640.html
標籤:其他
