CDH 在YARN上运行Spark应用程序

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

在YARN上运行Spark应用程序

当Spark应用程序在YARN集群管理器上运行时,资源管理,调度和安全性由YARN控制。

继续阅读:

部署模式

在YARN中,每个应用程序实例都有一个ApplicationMaster进程,该进程是为该应用程序启动的第一个容器。应用程序负责从ResourceManager请求资源。一旦分配了资源,应用程序将指示NodeManagers代表它启动容器。ApplicationMasters消除了对活动客户端的需求:客户端上启动应用程序的进程可以终止,YARN进行协作管理的进程继续进行。

有关指定部署模式的选项,请参阅spark-submit选项

群集部署模式

在集群模式下,Spark驱动程序在集群主机上的ApplicationMaster中运行。YARN容器中的单个进程负责驱动应用程序并向YARN请求资源。启动应用程序的客户端不需要在应用程序的生命周期中运行。

图片.png

集群模式不太适合交互式使用Spark。需要用户输入的Spark应用程序,例如 spark-shell and pyspark,需要Spark驱动程序在启动Spark应用程序的客户端进程中运行。

客户端部署模式

在客户端模式下,Spark驱动程序在提交作业的主机上运行。ApplicationMaster仅负责从YARN请求执行程序容器。容器启动后,客户端与容器通信以安排工作。

图片.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

配置环境

Spark要求客户端配置文件包含 HADOOP_CONF_DIR or YARN_CONF_DIR 环境变量,指向集群目录。这些配置用于写入HDFS并连接到YARN ResourceManager。如果您使用Cloudera Manager部署,则会自动配置这些变量。如果您使用的是非托管部署,请确保按照在YARN上运行Spark中所述设置变量。

在YARN上运行Spark Shell应用程序

在YARN上使用运行spark-shell or pyspark ,使用 --master yarn --deploy-mode client 启动应用程序。

如果您正在使用Cloudera Manager部署,则会自动配置这些属性。

将Spark应用程序提交给YARN

要向YARN提交应用,请使用spark-submit,指定--master yarn 选项,请参阅spark-submit参数

监视和调试Spark应用程序

要获取有关Spark应用程序行为的信息,可以参考YARN日志和Spark Web应用程序UI。这两种方法提供补充信息。有关如何查看由Spark应用程序和Spark Web应用程序UI创建的日志的信息,请参阅监控Spark应用程序

例如:在YARN上运行SparkPi

这些例子演示了如何使用 spark-submit 用各种选项提交SparkPi Spark示例应用程序。在这些例子中,在JAR控制了逼近应该与pi接近多少之后通过的参数。

在CDH部署中,SPARK_HOME 默认为/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

该命令会打印状态,直到作业完成或您按下control-C。终止spark-submit 集群模式下的进程不会像在客户端模式下那样终止Spark应用程序。要监视正在运行的应用程序的状态,请运行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应用程序上配置Spark

除了spark-submit选项之外在YARN上运行spark-submit的其他选项

spark-submit on YARN Options

选项 描述
archives 逗号分隔的archives列表,被提取到每个执行者的工作目录中。对于 客户端部署模式,路径必须指向本地文件。对于集群部署模式,路径可以是本地文件,也可以是集群内全局可见的URL; 请参阅高级依赖关系管理
executor-cores 每个执行器上分配的处理器内核数量。或者,您可以使用 spark.executor.cores 属性。
executor-memory 分配给每个执行程序的最大堆大小。或者,您可以使用spark.executor.memory 属性。
num-executors 为此应用程序分配的YARN容器总数。或者,您可以使用spark.executor.instances 属性。
queue 提交作业的YARN队列。有关更多信息,请参阅将应用程序和查询分配给资源池。默认: default。

在初始安装期间,Cloudera Manager根据您的群集环境调整属性。

除了命令行选项外,还提供以下属性:

属性 描述
spark.yarn.driver.memoryOverhead 每个驱动程序可以从YARN请求的额外off-heap 存储量。结合spark.driver.memory,这是YARN可用于为驱动程序进程创建JVM的总内存。
spark.yarn.executor.memoryOverhead 每个执行程序进程可从YARN请求的额外堆外存量。结合spark.executor.memory,这是YARN可用于为执行程序进程创建JVM的总内存。

动态分配

动态分配允许Spark根据工作负载动态扩展分配给应用程序的集群资源。当启用动态分配并且Spark应用程序有待处理任务的积压时,它可以请求执行程序。当应用程序空闲时,其执行程序将被释放并可被其他应用程序获取。

从CDH 5.5开始,默认启用动态分配。动态分配属性描述了控制动态分配的属性。

如果你设置spark.dynamicAllocation.enabled 为false 或使用 --num-executors 命令行参数或设置 spark.executor.instances 时,动态分配被禁用。有关动态分配如何工作的更多信息,请参阅资源分配策略

当启用Spark动态资源分配时,所有资源都会分配给第一个可用的作业,导致后续应用程序排队。为了允许应用程序并行获取资源,将资源分配给池,在池中运行应用程序,并允许池中运行的应用程序被抢占。请参阅动态资源池

如果您正在使用Spark Streaming,请参阅Spark Streaming和Dynamic Allocation中的建议。

动态分配属性

图片.png

优化非 CM 部署CDH中的YARN模式

在不由Cloudera Manager管理的CDH部署中,Spark每次(spark-submit)运行时都会将Spark程序集JAR文件复制到HDFS 。您可以通过执行以下任一操作来避免此复制:

  • 设置 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. 设置spark.yarn.jar 为 HDFS路径:

spark.yarn.jar=hdfs://namenode:8020/user/spark/share/lib/spark-assembly.jar
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容