spark-shell運行spark任務參數設置


http://blog.csdn.net/zrc199021/article/details/52635819

之前初學Spark用spark-shell執行小程序的時候, 每次執行action操作(比如count,collect或者println),都會報錯:

WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

同時如果去spark ui上(公司默認為ip:18080)會看到spark-shell為核數core為0: 
這里寫圖片描述

原因是啟動spark-shell的時候沒有給他分配資源, 所以我們應該在啟動spark-shell的時候這么寫:

/home/mr/spark/bin/spark-shell --executor-memory 4G \ --total-executor-cores 10 \ --executor-cores 1
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

其中 :

--executor-memory 是指定每個executor(執行器)占用的內存 
--total-executor-cores是所有executor總共使用的cpu核數 
--executor-cores是每個executor使用的cpu核數 
對於spark-shell還可以在yarn上執行: 
--master yarn-client 
這里必須是client,不同於spark-submit的yarn-cluster, 因為spark-shell作為一個與用戶交互的命令行,必須將Driver運行在本地,而不是yarn上, 其他的參數與submit一樣.

以上參數就限制了總cpu核數為10, executor數目為10


但是, 每次執行都要寫這么多參數顯然很麻煩, 我們也可以通過修改spark-shell的方法將以上參數改成默認, 方法如下: 
spark-shell之前代碼:

... ... function main() { ... else export SPARK_SUBMIT_OPTS "$FWDIR"/bin/spark-submit --class org.apache.spark.repl.Main "$@" fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

修改為:

... ... function main() { ... else export SPARK_SUBMIT_OPTS # CUN RESOURCE_OPTIONS="--executor-memory 1G --total-executor-cores 10 --executor-cores 1 " CMD_OPTIONS=$RESOURCE_OPTIONS$@ echo "CMD_OPTIONS: " $CMD_OPTIONS "$FWDIR"/bin/spark-submit --class org.apache.spark.repl.Main --name "Spark shell" $CMD_OPTIONS fi 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

之后, 直接運行spark-shell即可

參考: http://www.2cto.com/kf/201511/450843.html


免責聲明!

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



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