背景:
在部署完本地hadoop后,執(zhí)行示例MapReduce程序wordcount時,一直卡主在INFO mapreduce.Job: map 0% reduce 0%,等待N久也沒有反應(yīng)。

解決過程
從yarn的web界面可以看到當(dāng)前的任務(wù)進(jìn)度有5%,但是一直不會更新

查看了一下nodemanager日志(hadoop目錄的logs文件下),發(fā)現(xiàn)一直有打印著
2020-05-01 20:15:53,885 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: ResourceCalculatorPlugin is unavailable on this system. org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl is disabled.

查詢這個報(bào)錯說是因?yàn)閥arn-site.xml配置出錯,解決方法為:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
修改改為:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce.shuffle</value>
</property>
按上述修改之后重新執(zhí)行示例,發(fā)現(xiàn)還是卡住,而且這次是卡在
INFO mapreduce.Job: Running job: job_1588335870581_0001

再次看了一下nodemanager日志,發(fā)現(xiàn)在yarn啟動是已經(jīng)報(bào)錯了。報(bào)錯信息為:
mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.The valid service name should only contain a-zA-Z0-9_ and can not start with numbers

這個報(bào)錯是因?yàn)閯偛判薷膟arn.site.xml導(dǎo)致的,yarn.nodemanager.aux-services的值在高版本的Hadoop中只能包含a-zA-Z0-9_,所以剛才修yarn.nodemanager.aux-services的值為mapreduce.shuffle是不行,無可奈何只好改回去,也就是回到上面的第一個問題。
繼續(xù)查找了很多的資料,還是沒有找都解決的方法,后面想了一下,是不是其他地方地方有錯導(dǎo)致的,所以繼續(xù)查看了其他的幾個日志,在resourcemanager日志中發(fā)現(xiàn)了一個報(bào)錯
ERROR org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl: App: application_1588336718534_0001 can't handle this event at current state org.apache.hadoop.yarn.state.InvalidStateTransitionException: Invalid event: APP_UPDATE_SAVED at ACCEPTED

查詢了一下資料后,有說這個問題是由于yarn默認(rèn)設(shè)置的內(nèi)存比較大,但是虛擬機(jī)內(nèi)存沒那么大,所以要調(diào)整內(nèi)存大小,在yarn-site.xml文件添加一下配置:
<property>
<name>yarn.app.mapreduce.am.resource.mb</name>
<value>256</value>
</property>
重新啟動后又出現(xiàn)另一個報(bào)錯Name node is in safe mode.,心好累!!這是由于強(qiáng)制退出hadoop進(jìn)程導(dǎo)致的,只需要執(zhí)行一下hadoop dfsadmin -safemode leave即可

再一次執(zhí)行示例jar /Library/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output,終于梳理通過。

實(shí)屬不易,順便把這個問題的處理過程給記錄一下,以方便后面查閱。