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包等。