Hive提交的MapReduce任務執行中段掛起(從Running狀態跳回為Accepted狀態)問題解決記錄


 一個用Java寫的計算程序通過JDBC的方式連接Hive數據庫,執行SQL查詢語句查詢數據。結果對應的MapReduce任務執行到Map 18% Reduce xx%之后,所有的進度輸出都變為了Map 0% Reduce 0%

在排查Java語句無問題后,kill掉了Job,由於Job的log已經不可查,直接嘗試重新運行程序

新的Hive查詢創建的MapReduce任務阻塞在了Accepted狀態,無法開始Running

仔細檢查了Hadoop的Web頁面,發現當前集群的5個節點都變為了Unhealthy狀態,可用的Memory和VCore都為0,推測應是資源不足的原因導致的任務無法開始執行

用“Hadoop Unhealthy”作為關鍵詞,百度到的網頁,有一些的做法是重啟Yarn的NodeManager和ResourceManager,然而之前已經做過多次重啟操作,並無效果

又找到了一篇文章,提到了Unhealthy原因是bad file,遂查看本集群的Unhealthy原因,發現也是bad file(包括local-file和log-file),確定為是剩余存儲空間不足,導致yarn將五個節點都標記為不可用,因此整個集群處於無資源可以執行任務的狀態

集群的5個節點,使用磁盤比例均達到90%以上,甚至更多,由於暫時無法進行數據轉移和刪除操作,找到了臨時解決方法——提高節點健康度檢查中磁盤占用的最大值,參考鏈接:http://stackoverflow.com/questions/29010039/yarn-unhealthy-nodes

 

更改$HADOOP_HOME/etc/hadoop/目錄下的yarn-site.xml文件,增加property:

 <property>
     <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
     <value>0.0</value>
  </property>
  <property>
     <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
     <value>99.0</value>
 </property>

為了為每個節點磁盤稍稍預留空間,此處的最大值設為了99%。

更改后,執行stop-yarn.sh和start-yarn.sh,重啟NodeManager和ResourceManager,在Hadoop的Web頁面刷新(http://namenode:8088//),可以看到節點重新回到了Headthy狀態,有了可用的Memory和VCore資源,Job可以正常執行了。

 

不過以上還是權宜之計,為了讓集群可以健康穩定的運行,還是需要及時對集群的磁盤進行清理,備份不常用的數據or補充存儲設備


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM