天天看點

Spark Standalone部署和配置調優

Spark:部署和standalone配置調優

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

spark還支援送出任務到YARN管理的叢集,稱為spark on yarn模式。

spark還支援Mesos管理的叢集,Mesos和YARN一樣都是管理叢集資源的。

另外spark自己提供了一種完整的叢集管理模式,就是standalone模式。

這時候spark的運作不依賴于Hadoop YARN,需要配置<code>$SPARK_HOME/conf/slaves</code>檔案指定從節點,然後用<code>$SPARK_HOME/sbin/start-all.sh</code>啟動spark叢集管理服務。

master

負責整體的配置設定資源 ,不會進行計算,不用設定很大記憶體和核心數:

worker

負責從節點的資源配置設定,建立excutor。

excutor

負責執行任務。

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應用可以在送出時通過<code>--total-executor-cores</code>參數指定用的總core數量。若不指定則會用光所有剩下的cores。

一個worker運作executor的數量不會超過同時送出的spark應用數量。

<code>--executor-memory</code>

每個executor配置設定記憶體,若超過worker可用剩餘記憶體則不會送出給此worker,若不可送出給任意worker則報錯

<code>--driver-memory</code>

<code>--driver-cores</code>

<code>--total-executor-cores</code>

<code>--class</code>

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

繼續閱讀