Spark集羣簡單介紹
如前面幾篇博客介紹的
Spark集羣分爲四種:
- local
- stand alone
- yarn
- mesos
這裏我們就拿yarn來介紹。
yarn集羣的兩種提交方式
首先spark跑在yarn集羣上,必須要開啓HDFS,因爲包要上傳到HDFS上,但是standalone集羣是不必開啓的,因爲要是開啓的話,就會有兩套spark集羣,當你提交Application時就可能出現資源搶奪問題。
client
standalone集羣和yarn集羣提交命令的比較:
- Stand alone:spark-submit --master spark://node01:7077
- yarn:spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi …/lib/spark-examples-1.6.3-hadoop2.6.0.jar 10
執行原理
執行流程
-
客戶端提交一個Application,在客戶端啓動一個Driver進程
-
Driver進程會向RS(ResourceManager)發送請求,啓動AM(ApplicationMaster)的資源。
-
RS收到請求,隨機選擇一臺NM(NodeManager)啓動AM。這裏的NM相當於Standalone中的Worker節點。
-
AM啓動後,會向RS請求一批container資源,用於啓動Executor
-
RS會找到一批NM返回給AM,用於啓動Executor。
-
AM會向NM發送命令啓動Executor。
-
Executor啓動後,會反向註冊給Driver,Driver發送task到Executor,執行情況和結果返回給Driver端。
cluster
提交命令(兩種)
./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi …/lib/spark-examples-1.6.0-hadoop2.6.0.jar 100
./spark-submit --master yarn-cluster --class org.apache.spark.examples.SparkPi …/lib/spark-examples-1.6.0-hadoop2.6.0.jar 100
執行原理
執行流程
- 客戶機提交Application應用程序,發送請求到RS(ResourceManager),請求啓動AM(ApplicationMaster)。
- RS收到請求後隨機在一臺NM(NodeManager)上啓動AM(相當於Driver端)。
- AM啓動,AM發送請求到RS,請求一批container用於啓動Executor。
- RS返回一批NM節點給AM。
- AM連接到NM,發送請求到NM啓動Executor。
- Executor反向註冊到AM所在的節點的Driver。Driver發送task到Executor。