Docker Hadoop 配置常見錯誤及解決辦法
問題1:wordcount運行卡住,hadoop 任務運行到running job就卡住了 INFO mapreduce.Job: Running job: job_....
解決如下:
1. 修改mapred-site.xml配置,配置文件在Hadoop安裝目錄下,etc/hadoop/mapred-site.xml
將以下配置
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property>
改成
<property> <name>mapreduce.job.tracker</name> <value>hdfs://master:8001</value> <final>true</final> </property>
master是hadoop主機master的地址,也可以是IP,例如:192.168.1.110
2. 修改完以上配置,重啟下服務試試看
stop-all.sh
start-all.sh
3. 如果還是不行,則修改yarn-site.xml,新增如下配置
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>20480</value> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>2048</value> </property> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>2.1</value> </property>
4. 解決完成
問題2:INFO ipc.Client: Retrying connect to server: h01/172.18.0.2:8032. Already tried 0 time(s); retry policy is RetryUpToMax
解決如下:
1. 重啟yarn
start-yarn.sh
2. 輸入jps查看是否啟動完成
3. 解決完成
問題3:org.apache.hadoop.dfs.SafeModeException: Cannot delete /user/hadoop/input. Name node is in safe mode
解決如下:
hadoop dfsadmin -safemode leave
用戶可以通過dfsadmin -safemode value 來操作安全模式,參數value的說明如下:
enter - 進入安全模式
leave - 強制NameNode離開安全模式
get - 返回安全模式是否開啟的信息
wait - 等待,一直到安全模式結束
問題4:hadoop 啟動錯誤 org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Encountered exception loading fsimage java.io.IOException: NameNode is not formatted.
解決如下:
1.關閉所有的節點:
stop-all.sh
2.namenode格式化
hadoop namenode -format
3.開啟所有的節點:
start-all.sh
4. 解決完成
問題5:hadoop集群配置datanode無法啟動的原因
解決如下:
1. 停止服務
stop-all.sh
2. 找到hadoop安裝目錄下配置的tmp,/etc/hadoop/core-site.xml,查看tmp目錄
3. 刪除/data/hadoop/tmp目錄下的文件
4. 找到hadoop安裝目錄下配置的name、data目錄,/etc/hadoop/hdfs-site.xml ,查看目錄
5. 刪除/data/hadoop/hdfs/data/和/data/hadoop/hdfs/name目錄下的文件
6. 啟動服務
start-all.sh
問題6:master: ssh: connect to host master port 22: Connection timed out
解決如下:
1. 安裝ssh
2. 啟動服務
service ssh start
問題7:啟動start-all.sh,發現namenode沒啟動,查看hadoop-root-namenode-hd_master.log,發現ERROR如下
原因是:Hostname不能包含-
或_
。且不要重復綁定
解決如下:
1. 重新配置打包鏡像,將hosts的下划線"_"去掉,即,“hd_master”改“hdmaster”
問題8:org.apache.hadoop.http.HttpRequestLog: Http request log for http.requests.resourcemanager is not defined
解決如下:
1. 檢查yarn-site.xml配置文件的yarn.resourcemanager.hostname配置是否正確。如
<property> <name>yarn.resourcemanager.hostname</name> <value>hdmaster</value> </property>
2. 檢查容器啟動的-h 是否正確。如
docker run -it --network hadoop_network --name hdmaster -h hd_master -p 9871:9870 -p 8089:8088 registry.cn-han...... /bin/bash
這里的-h參數錯了,應該改成hdmaster,即
docker run -it --network hadoop_network --name hdmaster -h hd_master -p 9871:9870 -p 8089:8088 registry.cn-hangzhou.aliyuncs.com/will-web/ubuntu_hadoop_signle:2.6 /bin/bash