該hadoop集群
采用三臺真實的部署在公網的服務器(系統為centos)進行分布式搭建,(兩臺騰訊云,一臺阿里云)
程序中遇到問題可以翻到最下方,或者評論區留言,
先建立ip映射,由于是云端服務器,則直接使用真實的公網ip,每臺服務器內均配置此檔案,
vim /etc/host

ping一下其他兩個設備,發現沒有問題,可以-n指定包數,也可以ctrl+c手動終止,

創建兩個檔案夾,softwares用于存盤壓縮包,moudules存盤解壓后的檔案(jdk,hadoop)
sudo mkdir /opt/softwares
sudo mkdir /opt/modules
查看全域組態檔(添加環境變數)
vim /etc/profile
組態檔如下(每臺服務器內均配置此檔案,)

export JAVA_HOME=/opt/modules/jdk1.8.0_241
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/opt/modules/hadoop-2.10.0
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin
先修改centos01組態檔如下

再傳給centos02,03
注意:如果如果用的不是hadoop用戶記得更改用戶名(例如root)

組態檔具體如下:
/opt/modules/hadoop-2.10.0/hadoop 目錄下
向hadoop-env.sh、mapred-env.sh、yarn-env.sh檔案中 添加jdk環境變數
export JAVA_HOME=/opt/modules/jdk1.8.0_241
export JAVA_HOME=/opt/modules/jdk1.8.0_241
hadoop集群又分為HDFS集群、YARN集群
具體可參考hadoop集群概述,我的另一篇博客,
然后我們分別配置HDFS集群、YARN集群,
配置HDFS集群
core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://centos01:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.10.0/tmp</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permission.enabled</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/modules/hadoop-2.10.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/modules/hadoop-2.10.0/tmp/dfs/data</value>
</property>
</configuration>
slaves
centos01
centos02
centos03
配置YARN集群
復制mapred-site.xml.template檔案并重命名為mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
在檔案mapred-site.xml插入如下內容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>centos01:8032</value>
</property>
</configuration>
在centos01中配置完成后,并且組態檔傳給centos02,centos03后,
分別查看三臺服務器的jdk和hadoop是否安裝成功,
java -version
hadoop version
centos01

centos02

centos03

發現沒有問題,
在centos01節點下格式化NameNode
hdfs namenode -format
格式化完畢后用如下命令
start-all.sh
啟動所有節點
結果如下圖

最后
jps查看各服務器狀態
centos01

centos02(最下面那個和本次實驗無關)

centos03

done!
ps:
中間也出現了需多問題,可以看看你是否也有相同問題
1.Exception in thread “main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal to have multiple roots (start tag in epilog?).
at [row,col,system-id]: [21,2,“file:/opt/modules/hadoop-2.10.0/etc/hadoop/yarn-site.xml”]
這個問題時configuration過多,更改配置不是像改組態檔向組態檔中添加環境變數一樣在最下方添加即可,而是要加在configuration標簽之間(或者dn(行數)d洗掉掉原本的configuration,然后直接粘貼全部配置),要符合xml格式也要符合這個規則,
2
類似于如下報錯的
centos03***************
caused by ****** /opt/modules/hadoop-2.10.0/etc/hadoop: No such file or directory
這種原因則是因為傳輸時導致檔案缺失,傳輸中斷等原因,
我一開始使用xftp傳輸到centos03(邊scp到02,這樣快),但這么做會有權限問題,chmod -R 777后 解決權限問題,但是依然缺少路徑,所以我又使用了centos02的方法 scp****,最后斷網后傳輸好像中斷了,又傳輸了一遍,終于啟動后沒有這個報錯了,我在centos03中直接cd 報錯的路徑也是沒有問題了,
3
其他無法啟動或啟動失敗的問題
可以考慮洗掉core組態檔下配置的hadoop的臨時檔案,然后重新裝配NameNode,
再啟動
云服務器相關問題
1
ping 不通
可能是因為安全組沒有開放ICMP協議,或者某個埠沒開放(只有華為云有這個問題),我開放了全部安全組后就可以ping通了,
2
使用xftp 這種linux->linux,windows->linux的檔案傳輸軟體時,要考慮權限問題,有時chmod -R 777 dir 能解決問題,有時不能,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/436399.html
標籤:其他
