1. 程式人生 > >Spark On Yarn:提交Spark應用程式到Yarn

Spark On Yarn:提交Spark應用程式到Yarn

Spark On Yarn模式配置非常簡單,只需要下載編譯好的Spark安裝包,在一臺帶有Hadoop Yarn客戶端的機器上解壓,簡單配置之後即可使用。

要把Spark應用程式提交到Yarn執行,首先需要配置HADOOP_CONF_DIR或者YARN_CONF_DIR,讓Spark知道Yarn的配置資訊,比如:ResourceManager的地址。可以配置在spark-env.sh中,也可以在提交Spark應用之前export:

export HADOOP_CONF_DIR=/etc/hadoop/conf
yarn-cluster模式提交Spark應用程式


./spark-submit \
--class
com.lxw1234.test.WordCount \
--master yarn-cluster \ --executor-memory 4G \ --num-executors 10 \ /home/lxw1234/spark-wordcount.jar \ /logs/2015-07-14/ /tmp/lxw1234/output/

yarn-client模式提交Spark應用程式


./spark-submit \
--class com.lxw1234.test.WordCount \
--master yarn-client \
--executor-memory 4G \
--num-executors 10
\
/home/lxw1234/spark-wordcount.jar \ /logs/2015-07-14/ /tmp/lxw1234/output/

Yarn Cluster模式和Yarn Client模式的主要區別

yarn-cluster模式中,應用程式(包括SparkContext)都是作為Yarn框架所需要的

ApplicationMaster,在Yarn ResourceManager為其分配的一個隨機節點上執行;

而在yarn-client模式中,SparkContext執行在本地,該模式適用於應用程式本身需要在本地進行互動的場合。

Spark Standalone模式下提交Spark應用程式,可參考:

以下是一些Spark On Yarn相關的配置引數:
spark.yarn.am.memory

預設值:512M

在yarn-client模式下,申請Yarn App Master所用的記憶體。
spark.driver.memory

預設值:512M

在yarn-cluster模式下,申請Yarn App Master(包括Driver)所用的記憶體。
spark.yarn.am.cores

預設值:1

在yarn-client模式下,申請Yarn App Master所用的CPU核數
spark.driver.cores

預設值:1

在yarn-cluster模式下,申請Yarn App Master(包括Driver)所用的CPU核數。
spark.yarn.am.waitTime

預設值:100s

在yarn-cluster模式下,Yarn App Master等待SparkContext初始化完成的時間;

在yarn-client模式下,Yarn App Master等待SparkContext連結它的時間;
spark.yarn.submit.file.replication

預設值:HDFS副本數

Spark應用程式的依賴檔案上傳到HDFS時,在HDFS中的副本數,這些檔案包括Spark的Jar包、應用程式的Jar包、其他作為DistributeCache使用的檔案等。通常,如果你的叢集節點數越多,相應地就需要設定越多的拷貝數以加快這些檔案的分發。
spark.yarn.preserve.staging.files

預設值:false

在應用程式結束後是否保留上述上傳的檔案。
spark.yarn.scheduler.heartbeat.interval-ms

預設值:5000

Spark Application Master向Yarn ResourceManager傳送心跳的時間間隔,單位毫秒。
spark.yarn.max.executor.failures

預設值:numExecutors * 2 (最小為3)

最多允許失敗的Executor數量。
spark.yarn.historyServer.address

預設值:none

Spark執行歷史Server的地址,主機:host,如:lxw1234.com:18080,注意不能包含http://

預設不配置,必須開啟Spark的historyServer之後才能配置。該地址用於Yarn ResourceManager在Spark應用程式結束時候,將該application的執行URL從ResourceManager的UI指向Spark historyServer UI。
spark.executor.instances

預設值:2

Executor例項的數量,不能與spark.dynamicAllocation.enabled同時使用。
spark.yarn.queue

預設值:default

指定提交到Yarn的資源池
spark.yarn.jar

Spark應用程式使用的Jar包位置,比如:hdfs://cdh5/lxw1234.com/

參考更多大資料Hadoop、Spark、Hive相關:lxw的大資料田地

另外,在提交Spark應用程式到Yarn時候,可以使用—files指定應用程式所需要的檔案;

使用—jars 和 –archives新增應用程式所依賴的第三方jar包等。