spark理論之運行模式

spark相比hadoop做了很多方面的優化,同時spark的job也支持提交到hadoop的yarn進行處理,同時也有屬於自己的一套資源調度框架standalone.同時也支持其他常用的資源調度框架。

  1. Spark運行模式

  • Local

多用於本地測試,如在eclipse,idea中寫程序測試等。

  • Standalone

Standalone是Spark自帶的一個資源調度框架,它支持完全分佈式。

  • Yarn

Hadoop生態圈裏面的一個資源調度框架,Spark也是可以基於Yarn來計算的。

  • Mesos

資源調度框架。

  • 要基於Yarn來進行資源調度,必須實現AppalicationMaster接口,Spark實現了這個接口,所以可以基於Yarn。

 

下面是我用來測試的一些命令:

./spark-submit  --master spark://cry-PC:7077 --class org.apache.spark.examples.JavaSparkPi ../examples/jars/spark-examples_2.12-2.4.4.jar 100

./spark-submit  --master spark://cry-PC:7077 --deploy-mode cluster --class org.apache.spark.examples.JavaSparkPi ../examples/jars/spark-examples_2.12-2.4.4.jar 100

./spark-submit  --master yarn --deploy-mode client --class org.apache.spark.examples.JavaSparkPi ../examples/jars/spark-examples_2.12-2.4.4.jar 100

./spark-submit  --master yarn --deploy-mode cluster --class org.apache.spark.examples.JavaSparkPi ../examples/jars/spark-examples_2.12-2.4.4.jar 100

在不區分任務調度框架的情況下,deploy-mode的可選值分別是client和cluster,兩種模式的區別在於driver的位置,其中client模式我們可以在終端看到job執行的整個過程,包括執行後的輸出結果;cluster模式只能看到部分的執行過程,無法看到輸出結果。執行的日誌和結果要去spark和hadoop的web控制檯查看

 

下面是yarn-cluster的執行結果圖

2   執行過程中常出現的錯誤和解決辦法

Application application_1581053570255_0004 failed 2 times due to AM Container for appattempt_1581053570255_0004_000002 exited with exitCode: -103

Failing this attempt.Diagnostics: [2020-02-07 17:48:19.359]Container [pid=13535,containerID=container_1581053570255_0004_02_000001] is running beyond virtual memory limits. Current usage: 307.6 MB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.

這個錯誤容易在yarn-client上,大致意思就是虛擬內存使用超出限制,解決辦法是修改yarn-site.xml,加入如下配置

<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>15.5</value>
</property>

 數值配置的大一點就行,默認配置是2.1有點太小了

這個是查資料時看到的也貼出來給大家看看

 

參考資料:https://www.jianshu.com/p/c2bef33a046f

 關於spark提交任務的詳細說明和流程這篇文章我覺得講的很好,可以看看

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章