Spark yarn模式任务提交
1. Spark yarn模式任务提交
Spark yarn模式任务提交有两种,Yarn-cluster,Yarn-client,默认client
1.1 名词简介
1. ResourceManager
是集群所有应用程序的资源管理器,能够管理集群的计算资源并为每个Application分配,它是一个纯粹的调度器。
2. NodeManager
是每一台slave机器的代理,执行应用程序,并监控应用程序的资源使用情况。
3. Application Master
每一个应用程序都会有一个Application Master,它的主要职责是向RM申请资源、在每个NodeManager上启动executors、监控和跟踪应用程序的进程等。
4. Driver
负责创建SparkContext(spark会话框,准备spark程序的运行环境) 在Spark中由SparkContext负责与ClusterManager通讯,进行资源的申请,任务的分配和监控等。当Executor部分运行完毕后,Driver同时负责将SaprkContext关闭,通常创建SparkContext的机器代表Driver.
1.2 yarn-cluster
cluster模式下driver运行在yarn上,避免了Application Master与活的client的频繁交互
- 客户端生成作业信息提交给ResourceManager,
- RM在会在某个NodeManager分配一个container并启动 Application Master ,AM初始化SparkContext,开始驱动程序,这个NodeManager便是driver
- Application Maste向ResourceManager申请资源,并在每台NodeManager上启动相应的executors
- Executor向NodeManager的Application Master注册汇报,并完成相应的任务
1.3 yarn-client
- 客户端生成作业信息提交给ResourceManager
- RM在本地NodeManager上启动Application Master
- AM向RM申请资源,分配资源同时通知其他NodeManager启动相应的Executor
- Executor向本地启动的Application Master注册汇报并完成相应的任务
1.4 两者区别:
-
两者Driver所在位置不同
Yarn-Client 的 driver在客户端
Yarn-Cluster 的driver在yarn集群中随机选择 -
客户端的任务不同
Yarn-Client是在客户端运行,先有driver再用Application Master,此时driver负责RDD,task生成和分发,向AM汇报注册汇报,AM负责从RM申请资源.client时刻与AM保持联系。
Yarn-Cluster时 client将用户程序提交到到spark集群中就与spark集群断开联系了,此时client将不会发挥其他任何作用,仅仅负责提交。在此模式下。AM和driver是同一个东西。
1.5 命令案例
Spark任务提交至yarn
/spark/bin/spark-submit \
--master yarn \ #提交模式,显而易见我们是提交到yarn上
--deploy-mode cluster \ #运行的模式,还有一种client模式,但大多用于调试,此处使用cluster模式
--class org.apache.spark.test \ #提交的任务
--name "test" \ #任务名字
--queue root.default \ #提交的队列
--driver-memory 3g \ #为driver申请的内存
--num-executors 1 \ #executors的数量,可以理解为线程数,对应yarn中的Container个数
--executor-memory 6g \ #为每一个executor申请的内存
--executor-cores 4 \ #为每一个executor申请的core
--conf spark.yarn.driver.memoryOverhead=1g \ #driver可使用的非堆内存,这些内存用于如VM,字符 串常量池以及其他额外本地开销等
--conf spark.yarn.executor.memoryOverhead=2g \ #每个executor可使用的非堆内存,这些内存用于如 VM,字符串常量池以及其他额外本地开销等
- 实际案例
su hdfs
export SPARK_MAJOR_VERSION=2
##默认的client模式
nohup spark-submit \
--master yarn \
--driver-memory 3g \
--num-executors 5 \
--executor-cores 6 \
--executor-memory 10g \
--class mergedata.BusEmpData \
--name "BusEmpData" \
/home/dgg/businessrecommender/DataLoader-1.0-SNAPSHOT-jar-with-dependencies.jar &
###指定cluster模式
nohup spark-submit \
--master yarn \
--deploy-mode cluster \
--driver-memory 3g \
--num-executors 5 \
--executor-cores 6 \
--executor-memory 10g \
--class mergedata.BusEmpData \
--name "BusEmpData" \
/home/dgg/businessrecommender/DataLoader-1.0-SNAPSHOT-jar-with-dependencies.jar &
上一篇: 代码库_SDRAM驱动HY57V2
下一篇: 对SDRAM的理解总结
推荐阅读
-
spark利用yarn提交任务报:YARN application has exited unexpectedly with state UNDEFINED
-
hadoop-yarn集群中,利用hell脚本自动化提交spark任务
-
关于华为FusionInsight Manager安全模式下执行spark任务的一个坑--记录
-
解析spark源码yarn-cluster模式任务提交
-
(Sql Server big data cluster)Azure Data Studio提交Spark任务从hdfs到SQL Server 2019
-
利用maven的资源提交spark任务
-
Hive提交到yarn的任务一直在running问题排查
-
Spark on yarn模式的参数设置即调优
-
Spark on YARN的cluster模式
-
向spark standalone集群提交任务