java.lang.Exception: Unknown container. Container either has not started or has already completed or doesn't belong to this node at all.
參考:https://blog.csdn.net/lisongjia123/article/details/78639058 但是這篇文章跟官網有一定的出入,我做了一定修正
解決方法
官方文檔顯示yarn的日志監控功能默認是處於關閉狀態的,需要我們進行開啟,開啟步驟如下:
1.在yarn-site.xml文件中添加日志監控支持
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
yarn.log-aggregation-enable官網中的默認值為false
2在mapred-site.xml文件中添加日志服務的配置
<property>
<!-- 表示提交到hadoop中的任務采用yarn來運行,要是已經有該配置則無需重復配置 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!--日志監控服務的地址,一般填寫為nodenode機器地址 -->
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
mapreduce.framework.name官網默認值是local
要讓他在yarn上跑就把local改為yarn
mapreduce.jobhistory.webapp.address 和mapreduce.jobhistory.address值分別為默認0.0.0.0:19888 和0.0.0.0:10020
3.將修改后的配置文件拷貝到集群中的其他機器(單機版hadoop可以跳過該步驟)
快捷一點可以使用 scp 命令將配置文件拷貝覆蓋到其他機器
scp yarn-site.xml skyler@slave1:/hadoopdir/etc/hadoop/
scp mapred-site.xml skyler@slave1:/hadoopdir/etc/hadoop/
…其他datanode機器同理
四、重新啟動集群的Hdfs和Yarn服務
在namenode機器上分別對hdfs和yarn服務進行重啟
bin/stop-dfs.sh
bin/start-dfs.sh
bin/stop-yarn.sh
bin/start-yarn.sh
五、 開啟日志監控服務進程
在nodenode機器上執行 sbin/mr-jobhistory-daemon.sh start historyserver 命令,執行完成后使用jps命令查看是否啟動成功,若啟動成功則會顯示出JobHistoryServer服務