几种常见的spark任务提交模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了几种常见的spark任务提交模式相关的知识,希望对你有一定的参考价值。

参考技术A [if !supportLists]2.1.1 [endif] YARN  Clu

图2-4 YARN Cluster 模式

在YARN  Cluster  模式下,任务提交后会和ResourceManager  通讯申请启动

ApplicationMaster,随后ResourceManager  分配container,在合适的NodeManager

上启动ApplicationMaster,此时的ApplicationMaster 跟Driver在一个NodeManager上,但当有多个App任务时,Driver会分布在多个NodeManager上面,因为Driver要与client通信,Driver在同一个NodeManager上会对网络的要求很高。

Driver 启动后向ResourceManager 申请Executor 内存,ResourceManager 接到

ApplicationMaster 的资源申请后会分配container,然后在合适的NodeManager 上启动Executor 进程,Executor 进程启动后会向Driver 反向注册,Executor 全部注册完成后Driver 开始执行main 函数,之后执行到Action 算子时,触发一个job,并根据宽依赖开始划分stage,每个stage  生成对应的taskSet,之后将task  分发到各个

Executor 上执行。

Spark在StandAlone模式下提交任务,spark.rpc.message.maxSize太小而出错

1.错误信息
org.apache.spark.SparkException: Job aborted due to stage failure:Serialized task 32:5 was 1728746673 bytes, which exceeds max allowed: spark.rpc.message.maxSize (134217728 bytes).
Consider increasing spark.rpc.message.maxSize or using broadcast variables for large values.at org.apache.spark.scheduler.DAGScheduler……
2.错误原因
  Spark节点间传输传输过大,超过系统默认的128M,因此需要提高
spark.rpc.message.maxSize的大小或者选择用broadcast广播数据。
然而在某些情况下,广播数据并不能契合我们的需求,这时我们可以在提交任务时对
spark.rpc.message.maxSize进行配置,调高maxSize即可。
3.具体解决方案

./bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf spark.rpc.message.maxSize=256
  ... # other options
  <application-jar> \
  [application-arguments]
红色区域即可根据需求更改spark.rpc.message.maxSize的大小,举例改为256M,实测有效。
 

以上是关于几种常见的spark任务提交模式的主要内容,如果未能解决你的问题,请参考以下文章

Spark篇---Spark中yarn模式两种提交任务方式

Spark任务提交源码

怎么查看spark正在运行的任务

1. spark-2.4.6源码分析(基于yarn cluster模式)-任务提交

修正版|Spark任务提交后都干了些什么?

.Spark基于Standalone提交任务两种方式