Spark:部署和standalone配置調優


  1. spark可以不進行任何配置,直接運行,這時候spark像一個java程序一樣,是直接運行在VM中的。

  2. spark還支持提交任務到YARN管理的集群,稱為spark on yarn模式。

  3. spark還支持Mesos管理的集群,Mesos和YARN一樣都是管理集群資源的。

  4. 另外spark自己提供了一種完整的集群管理模式,就是standalone模式。
    這時候spark的運行不依賴於Hadoop YARN,需要配置$SPARK_HOME/conf/slaves文件指定從節點,然后用$SPARK_HOME/sbin/start-all.sh啟動spark集群管理服務。


standalone模式下

  • master
    負責整體的分配資源 ,不會進行計算,不用設置很大內存和核心數:
  • worker
    負責從節點的資源分配,創建excutor。
  • excutor
    負責執行任務。

$SPARK_HOME/conf/spark-env.sh中配置項

  • SPARK_WORKER_CORES
    每個worker能用cpu核心數,不配置默認為此節點所在機器的全部核心數。

  • SPARK_WORKER_MEMORY
    每個worker最多能申請的內存

  • SPARK_WORKER_INSTANCES
    本台機器能最多能運行的worker數量,默認為1,若設置為大於1則需要多次運行啟動worker命令才能啟動多個worker,此時每個worker可用最大核心數需要設置,否則若此機器上所有worker申請的核心數大於此機器物理核心數會報錯。(據說高版本spark支持一個worker上啟動多個executor,那樣的話這個選項就沒有存在意義了。未測試。)

默認情況,每個機器只有一個worker,提交一個spark應用,最多為每個worker分配一個executor。

每個spark應用最少會獨占一個core,若要同時提交多個spark應用,則所有應用占用的cores不能超過worker能申請的所有cores,否則會報錯。
spark應用可以在提交時通過--total-executor-cores參數指定用的總core數量。若不指定則會用光所有剩下的cores。

一個worker運行executor的數量不會超過同時提交的spark應用數量。

spark-submit參數

  • --executor-memory
    每個executor分配內存,若超過worker可用剩余內存則不會提交給此worker,若不可提交給任意worker則報錯
  • --driver-memory
  • --driver-cores
  • --total-executor-cores
  • --class

對於spark on yarn模式沒有worker,因為是yarn來控制executor的。


免責聲明!

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



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