以yarn-client方式提交spark任務,任務一直卡在ACCEPTED狀態


問題背景

spark是以客戶端的方式安裝的,並沒有啟動spark的mesos集群,這時候的spark就相當與hive客戶端。
以local模型和yarn-cluster方式提交任務,都能正確額執行,但是一yarn-client方式就卡在ACCEPTED

問題原因

在網上查了資料,都說是資源不夠用,需要調整yarn.scheduler.capacity.maximum-am-resource-percent從0.1改成0.5,但是我測試數據才幾k,集群內存128G,所以我直接排除了這個原因
后來想到,只有yarn-client方式失敗,那問題應該出來driver端。就查看了一下服務器的/etc/hosts,發現diver上有集群其他節點的IP等信息,但是其他節點沒有driver配置信息
導致driver能訪問到集群,但是集群其他節點訪問不了driver
所以local模式可以執行
yarn-cluster上可以執行,是因為客戶端只要把任務提交到yarn上,客戶端就沒有用了。
但是yarn-client方式,客戶端是充當了driver,driver需要一直和集群有通信,所以接收不到resouceManager的反饋。任務就一直卡住了

解決辦法:

有兩個方法:
    1、在命令后面加上一個--conf spark.driver.host=$your_ip_address,后面直接填客戶端機器的IP地址就行
spark-submit \ 
       --master yarn \
       --deploy-mode client \
       --num-executors 2 \
       --executor-memory 1G \
       --executor-cores 1 \
       --conf spark.driver.host=192.168.72.129\
        dmp_broadcast_data_day.py
    2、在集群其他節點上都把driver服務器的IP加上去。


免責聲明!

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



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