CDH 在YARN上運行Spark應(yīng)用程序

翻譯: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_running_spark_on_yarn.html
版本: 5.14.2

在YARN上運行Spark應(yīng)用程序

當(dāng)Spark應(yīng)用程序在YARN集群管理器上運行時,資源管理,調(diào)度和安全性由YARN控制。

繼續(xù)閱讀:

部署模式

在YARN中芙贫,每個應(yīng)用程序?qū)嵗加幸粋€ApplicationMaster進(jìn)程费坊,該進(jìn)程是為該應(yīng)用程序啟動的第一個容器麸粮。應(yīng)用程序負(fù)責(zé)從ResourceManager請求資源。一旦分配了資源澈驼,應(yīng)用程序?qū)⒅甘綨odeManagers代表它啟動容器走搁。ApplicationMasters消除了對活動客戶端的需求:客戶端上啟動應(yīng)用程序的進(jìn)程可以終止独柑,YARN進(jìn)行協(xié)作管理的進(jìn)程繼續(xù)進(jìn)行迈窟。

有關(guān)指定部署模式的選項私植,請參閱spark-submit選項

群集部署模式

在集群模式下车酣,Spark驅(qū)動程序在集群主機(jī)上的ApplicationMaster中運行曲稼。YARN容器中的單個進(jìn)程負(fù)責(zé)驅(qū)動應(yīng)用程序并向YARN請求資源。啟動應(yīng)用程序的客戶端不需要在應(yīng)用程序的生命周期中運行湖员。

圖片.png

集群模式不太適合交互式使用Spark贫悄。需要用戶輸入的Spark應(yīng)用程序,例如 spark-shell and pyspark娘摔,需要Spark驅(qū)動程序在啟動Spark應(yīng)用程序的客戶端進(jìn)程中運行窄坦。

客戶端部署模式

在客戶端模式下,Spark驅(qū)動程序在提交作業(yè)的主機(jī)上運行。ApplicationMaster僅負(fù)責(zé)從YARN請求執(zhí)行程序容器鸭津。容器啟動后彤侍,客戶端與容器通信以安排工作。

圖片.png

Deployment Mode Summary

Mode YARN客戶端模式 YARN集群模式
Driver runs in 客戶 ApplicationMaster
Requests resources ApplicationMaster ApplicationMaster
Starts executor processes YARN NodeManager YARN NodeManager
Persistent services YARN ResourceManager和NodeManagers YARN ResourceManager和NodeManagers
Supports Spark Shell YES No

配置環(huán)境

Spark要求客戶端配置文件包含 HADOOP_CONF_DIR or YARN_CONF_DIR 環(huán)境變量逆趋,指向集群目錄盏阶。這些配置用于寫入HDFS并連接到Y(jié)ARN ResourceManager。如果您使用Cloudera Manager部署闻书,則會自動配置這些變量名斟。如果您使用的是非托管部署,請確保按照在YARN上運行Spark中所述設(shè)置變量魄眉。

在YARN上運行Spark Shell應(yīng)用程序

在YARN上使用運行spark-shell or pyspark 砰盐,使用 --master yarn --deploy-mode client 啟動應(yīng)用程序。

如果您正在使用Cloudera Manager部署坑律,則會自動配置這些屬性楞卡。

將Spark應(yīng)用程序提交給YARN

要向YARN提交應(yīng)用,請使用spark-submit脾歇,指定--master yarn 選項蒋腮,請參閱spark-submit參數(shù)

監(jiān)視和調(diào)試Spark應(yīng)用程序

要獲取有關(guān)Spark應(yīng)用程序行為的信息藕各,可以參考YARN日志和Spark Web應(yīng)用程序UI池摧。這兩種方法提供補(bǔ)充信息。有關(guān)如何查看由Spark應(yīng)用程序和Spark Web應(yīng)用程序UI創(chuàng)建的日志的信息激况,請參閱監(jiān)控Spark應(yīng)用程序作彤。

例如:在YARN上運行SparkPi

這些例子演示了如何使用 spark-submit 用各種選項提交SparkPi Spark示例應(yīng)用程序。在這些例子中乌逐,在JAR控制了逼近應(yīng)該與pi接近多少之后通過的參數(shù)竭讳。

在CDH部署中,SPARK_HOME 默認(rèn)為/usr/lib/spark 在包裝安裝和 </opt/cloudera/parcels/CDH/lib/spark在包裹安裝中浙踢。在Cloudera Manager部署中绢慢,shell也可從 /usr/bin。

在YARN集群模式下運行SparkPi

在集群模式下運行SparkPi:

  • CDH 5.2和更低
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode cluster SPARK_HOME/examples/lib/spark-examples.jar 10
  • CDH 5.3和更高
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode cluster SPARK_HOME/lib/spark-examples.jar 10

該命令會打印狀態(tài)洛波,直到作業(yè)完成或您按下control-C胰舆。終止spark-submit 集群模式下的進(jìn)程不會像在客戶端模式下那樣終止Spark應(yīng)用程序。要監(jiān)視正在運行的應(yīng)用程序的狀態(tài)蹬挤,請運行yarn application -list.

在YARN客戶端模式下運行SparkPi

在客戶端模式下run SparkPi:

  • CDH 5.2和更低
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode client SPARK_HOME/examples/lib/spark-examples.jar 10
  • CDH 5.3和更高
spark-submit --class org.apache.spark.examples.SparkPi --master yarn \
--deploy-mode client SPARK_HOME/lib/spark-examples.jar 10

在YARN集群模式下運行Python SparkPi

  1. 解壓縮Python示例存檔:
sudo su gunzip SPARK_HOME/lib/python.tar.gz
sudo su tar xvf SPARK_HOME/lib/python.tar
  1. run pi.py 文件:
spark-submit --master yarn --deploy-mode cluster SPARK_HOME/lib/pi.py 10

在YARN應(yīng)用程序上配置Spark

除了spark-submit選項之外缚窿,在YARN上運行spark-submit的其他選項

spark-submit on YARN Options

選項 描述
archives 逗號分隔的archives列表焰扳,被提取到每個執(zhí)行者的工作目錄中倦零。對于 客戶端部署模式误续,路徑必須指向本地文件。對于集群部署模式扫茅,路徑可以是本地文件女嘲,也可以是集群內(nèi)全局可見的URL; 請參閱高級依賴關(guān)系管理
executor-cores 每個執(zhí)行器上分配的處理器內(nèi)核數(shù)量诞帐⌒滥幔或者,您可以使用 spark.executor.cores 屬性停蕉。
executor-memory 分配給每個執(zhí)行程序的最大堆大小愕鼓。或者慧起,您可以使用spark.executor.memory 屬性菇晃。
num-executors 為此應(yīng)用程序分配的YARN容器總數(shù)◎炯罚或者磺送,您可以使用spark.executor.instances 屬性。
queue 提交作業(yè)的YARN隊列灿意。有關(guān)更多信息估灿,請參閱將應(yīng)用程序和查詢分配給資源池。默認(rèn): default缤剧。

在初始安裝期間馅袁,Cloudera Manager根據(jù)您的群集環(huán)境調(diào)整屬性。

除了命令行選項外荒辕,還提供以下屬性:

屬性 描述
spark.yarn.driver.memoryOverhead 每個驅(qū)動程序可以從YARN請求的額外off-heap 存儲量汗销。結(jié)合spark.driver.memory,這是YARN可用于為驅(qū)動程序進(jìn)程創(chuàng)建JVM的總內(nèi)存抵窒。
spark.yarn.executor.memoryOverhead 每個執(zhí)行程序進(jìn)程可從YARN請求的額外堆外存量弛针。結(jié)合spark.executor.memory,這是YARN可用于為執(zhí)行程序進(jìn)程創(chuàng)建JVM的總內(nèi)存李皇。

動態(tài)分配

動態(tài)分配允許Spark根據(jù)工作負(fù)載動態(tài)擴(kuò)展分配給應(yīng)用程序的集群資源削茁。當(dāng)啟用動態(tài)分配并且Spark應(yīng)用程序有待處理任務(wù)的積壓時,它可以請求執(zhí)行程序疙赠。當(dāng)應(yīng)用程序空閑時付材,其執(zhí)行程序?qū)⒈会尫挪⒖杀黄渌麘?yīng)用程序獲取朦拖。

從CDH 5.5開始圃阳,默認(rèn)啟用動態(tài)分配。動態(tài)分配屬性描述了控制動態(tài)分配的屬性璧帝。

如果你設(shè)置spark.dynamicAllocation.enabled 為false 或使用 --num-executors 命令行參數(shù)或設(shè)置 spark.executor.instances 時捍岳,動態(tài)分配被禁用。有關(guān)動態(tài)分配如何工作的更多信息,請參閱資源分配策略锣夹。

當(dāng)啟用Spark動態(tài)資源分配時页徐,所有資源都會分配給第一個可用的作業(yè),導(dǎo)致后續(xù)應(yīng)用程序排隊银萍。為了允許應(yīng)用程序并行獲取資源变勇,將資源分配給池,在池中運行應(yīng)用程序贴唇,并允許池中運行的應(yīng)用程序被搶占搀绣。請參閱動態(tài)資源池

如果您正在使用Spark Streaming戳气,請參閱Spark Streaming和Dynamic Allocation中的建議链患。

動態(tài)分配屬性

圖片.png

優(yōu)化非 CM 部署CDH中的YARN模式

在不由Cloudera Manager管理的CDH部署中,Spark每次(spark-submit)運行時都會將Spark程序集JAR文件復(fù)制到HDFS 瓶您。您可以通過執(zhí)行以下任一操作來避免此復(fù)制:

  • 設(shè)置 spark.yarn.jar 為 JAR的本地路徑:local:/usr/lib/spark/lib/spark-assembly.jar. 麻捻。
  • 上傳JAR并配置JAR位置:
    1. 手動將Spark程序集JAR文件上傳到HDFS:
$ hdfs dfs -mkdir -p /user/spark/share/lib
$ hdfs dfs -put SPARK_HOME/assembly/lib/spark-assembly_*.jar /user/spark/share/lib/spark-assembly.jar

每次將Spark升級到新的 CDH版本時,您都必須手動上載JAR呀袱。
2. 設(shè)置spark.yarn.jar 為 HDFS路徑:

spark.yarn.jar=hdfs://namenode:8020/user/spark/share/lib/spark-assembly.jar
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贸毕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夜赵,更是在濱河造成了極大的恐慌崖咨,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件油吭,死亡現(xiàn)場離奇詭異击蹲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)婉宰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門歌豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人心包,你說我怎么就攤上這事类咧。” “怎么了蟹腾?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵痕惋,是天一觀的道長。 經(jīng)常有香客問我娃殖,道長值戳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任炉爆,我火速辦了婚禮堕虹,結(jié)果婚禮上卧晓,老公的妹妹穿的比我還像新娘。我一直安慰自己赴捞,他們只是感情好逼裆,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赦政,像睡著了一般胜宇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上恢着,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天掸屡,我揣著相機(jī)與錄音,去河邊找鬼然评。 笑死仅财,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碗淌。 我是一名探鬼主播盏求,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼亿眠!你這毒婦竟也來了碎罚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤纳像,失蹤者是張志新(化名)和其女友劉穎荆烈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竟趾,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡憔购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了岔帽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片玫鸟。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖犀勒,靈堂內(nèi)的尸體忽然破棺而出屎飘,到底是詐尸還是另有隱情,我是刑警寧澤贾费,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布钦购,位于F島的核電站,受9級特大地震影響褂萧,放射性物質(zhì)發(fā)生泄漏押桃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一箱玷、第九天 我趴在偏房一處隱蔽的房頂上張望怨规。 院中可真熱鬧陌宿,春花似錦锡足、人聲如沸波丰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掰烟。三九已至,卻和暖如春沐批,著一層夾襖步出監(jiān)牢的瞬間纫骑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工九孩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留先馆,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓躺彬,卻偏偏與公主長得像煤墙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宪拥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容