2015-03-02 67 views
39

該DOC https://spark.apache.org/docs/1.1.0/submitting-applications.html羣集部署模式應該使用什麼條件而不是客戶端?

描述部署模式爲:

--deploy-mode: Whether to deploy your driver on the worker nodes (cluster) or locally as an external client (client) (default: client) 

使用該圖fig1作爲引導(從http://spark.apache.org/docs/1.2.0/cluster-overview.html截取):

enter image description here

如果我開球一個火花工作:

./bin/spark-submit \ 
    --class com.driver \ 
    --master spark://MY_MASTER:7077 \ 
    --executor-memory 845M \ 
    --deploy-mode client \ 
    ./bin/Driver.jar 

然後Driver ProgramMY_MASTERfig1MY_MASTER

相反,如果我使用--deploy-mode clusterDriver Program將工作者節點之間共享指定?如果這是真的,那麼這是否意味着fig1中的Driver Program框可以被丟棄(因爲它不再被利用),因爲SparkContext也將在工作節點之間共享?

應該使用什麼條件cluster而不是client

回答

78

不,部署模式爲client時,驅動程序不一定是主節點。你可以在你的筆記本電腦上運行spark-submit,並且驅動程序可以在你的筆記本電腦上運行。

相反,當部署模式爲cluster時,則使用集羣管理器(主節點)來查找具有足夠可用資源來執行驅動程序的從站。結果,驅動程序將在其中一個從節點上運行。作爲執行委託,你不能從驅動程序的結果,它必須存儲在一個文件,數據庫及其結果等

  • 客戶端模式
    • 想找到一份工作結果(動態分析)
    • 更容易開發/調試
    • 控制在您的驅動程序運行
    • 始終保持應用程序:暴露你的星火作業啓動的REST服務或Web UI
  • 集羣模式
    • 資源分配更容易(讓主人決定):消防和忘記
    • 末監控從主Web UI的驅動程序的其他職工一樣
    • 停止:一個作業是完成後,分配的資源被釋放
+0

在客戶端模式的子彈點,爲什麼你說:?「爲振興/調試更容易」 – enneppi 2017-01-26 23:28:48

+3

所以,它聽起來像:客戶端模式意味着司機是哪個機火花提交我是不是跑了?因此,如果有羣集,並且部署模式是客戶端,驅動程序將是您提交的計算機,並且只要羣集配置正確,它將在羣集上並行運行?另外,它聽起來像:集羣模式意味着您在NEEDS上提交的機器是主節點? – 2017-03-08 14:06:00

5

我認爲這可以幫助你understand.In文檔https://spark.apache.org/docs/latest/submitting-applications.html 它說:「一種常見的部署策略是從與工作機物理位置相同的網關機器提交你的應用程序(例如,獨立EC2集羣中的主節點)。在此設置中,客戶端模式是適當的。在客戶端模式下,驅動程序直接在作爲集羣客戶端的spark-submit過程中啓動。應用程序的輸入和輸出連接到控制檯。因此,這種模式特別適用於涉及REPL的應用程序(例如Spark shell)。另外,如果您的應用程序是從遠離工作人員機器(例如本地筆記本電腦)提交的機器提交的,則通常使用羣集模式來儘量減少驅動程序和執行程序之間的網絡延遲。注意:目前不支持Mesos集羣或Python應用程序,集羣模式「。

1

什麼HADR?

  • 在集羣模式下,紗重新啓動驅動程序,而不殺死執行人。
  • 在客戶端模式,如果你的驅動被殺害紗自動殺死所有執行人
相關問題