1. spark提交后一直循環(huán)accepted
spark on yarn提交任務(wù)時(shí)一直顯示ACCEPTED,過(guò)一個(gè)小時(shí)后就會(huì)出現(xiàn)任務(wù)失敗,但在提交時(shí)shell終端顯示的日志并沒(méi)有報(bào)錯(cuò),logs文件夾中也沒(méi)有日志產(chǎn)生。注:spark on yarn是不需要啟動(dòng)spark集群的,只需要在提交任務(wù)的機(jī)器配置spark就可以了,因?yàn)槿蝿?wù)是由hadoop來(lái)執(zhí)行的,spark只負(fù)責(zé)任務(wù)的提交。
參考網(wǎng)址
遇到此種情況
a. 首先檢查All application的YARN頁(yè)面
看running application是否是該application,如果不是的話(huà),使用yarn application -kill "applicationID"
把之前的application kill掉。
b. 檢查ResourceManager日志
檢查ResourceManager日志,位于[HADOOP_HOME]/logs/yarn-ubuntu-resourcemanager-master.log中,若發(fā)現(xiàn)nodemanager并未分配到資源
參考網(wǎng)址
修改每臺(tái)NodeManager上的yarn-site.xml:
修改
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle,spark_shuffle</value>
</property>
增加
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>spark.shuffle.service.port</name>
<value>7337</value>
</property>
將$SPARK_HOME/lib/spark-1.6.0-yarn-shuffle.jar拷貝到每臺(tái)NodeManager的${HADOOP_HOME}/share/hadoop/yarn/lib/下。
重啟所有NodeManagers。
2.slave處于unhealthy狀態(tài)
觀察All Application的yarn界面發(fā)現(xiàn)有一個(gè)slave提示“unhealthy”狀態(tài)。NodeHealthReport報(bào)告如下:
1/1 local-dirs are bad: /tmp/hadoop-hduser/nm-local-dir; 1/1 log-dirs are bad: /usr/local/hadoop/logs/userlogs
測(cè)試過(guò)程中YARN Node變成Unhealthy了,后來(lái)定位到硬盤(pán)空間不夠。通過(guò)查找大于100M的文件時(shí)發(fā)現(xiàn)有N多個(gè)spark-assembly-1.6.0-SNAPSHOT-hadoop2.6.0-cdh5.3.1.jar包,大小為170多M,
每提交一個(gè)application到y(tǒng)arn上執(zhí)行,就會(huì)上傳一個(gè)assembly包,application個(gè)數(shù)一多,磁盤(pán)就占用了N多空間。
解決方案:
引起local-dirs are bad的最常見(jiàn)原因是由于節(jié)點(diǎn)上的磁盤(pán)使用率超出了max-disk-utilization-per-disk-percentage(默認(rèn)值90.0%)。
清理不健康節(jié)點(diǎn)上的磁盤(pán)空間或者降低參數(shù)設(shè)置的閾值:
直接在yarn-site.xml下添加如下:
<property> <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name> <value>98.5</value> </property>
因?yàn)楫?dāng)沒(méi)有磁盤(pán)空間,或因?yàn)闄?quán)限問(wèn)題,會(huì)導(dǎo)致作業(yè)失敗,所以不要禁用磁盤(pán)檢查。更詳細(xì)的信息可以參考https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/NodeManager.html#Disk_Checker
3. Yarn的一些默認(rèn)設(shè)置
4. HDFS block丟失過(guò)多進(jìn)入安全模式(safe mode)
內(nèi)存不足等原因?qū)е耫ataNode丟失超過(guò)設(shè)置的丟失百分比,系統(tǒng)自動(dòng)進(jìn)入安全模式
解決辦法:
在master執(zhí)行如下命令:
步驟 1 執(zhí)行命令退出安全模式:hadoop dfsadmin -safemode leave
步驟 2 執(zhí)行健康檢查,刪除損壞掉的block。 hdfs fsck / -delete
注意: 這種方式會(huì)出現(xiàn)數(shù)據(jù)丟失,損壞的block會(huì)被刪掉