Spark作业提交模式说明

Spark-Submit进程(在数据开发模块中为启动器Launcher)是Spark的作业提交命令,用于提交Spark作业,一般占用600 MB以上内存,可以设置Launcher的内存配额。

作业提交模式包括以下两种:

  • Header/Gateway节点提交:Spark-Submit进程运行在Header节点上,不受YARN监控。
    Spark-Submit内存消耗大,作业过多会造成Header节点资源紧张,导致整个集群不稳定。

  • Worker节点提交:Spark-Submit进程运行在Worker节点上,占用YARN的一个Container,受YARN监控。此模式可以缓解Header节点的资源使用。

作业实例消耗内存 = Launcher消耗内存+用户作业(Job)消耗内存。
对于Spark作业,Job消耗内存又可以进一步细分:

Job消耗内存 = 
 spark-submit(指逻辑模块,非进程)消耗内存 + 
 driver端消耗内存 +
 executor端消耗内存

作业配置不同,Driver端消耗的物理内存的位置也不同,

如果Spark使用Yarn-Client模式,则Spark-Submit+Driver是在同一个进程中。在作业提交中,如果这个进程使用LOCAL模式,则这个进程是 Header节点上的一个进程,不受YARN监控。如果这个进程使用YARN模式,则这个进程是Worker节点上的一个进程,占YARN的一个Container,受YARN监控。

如果Spark使用Yarn-Cluster模式,则Driver是独立的一个进程,占用YARN的一个Container,与Spark-Submit不在一个进程中。

总结

综上所述,作业的提交节点决定了Spark-Submit进程是在Header节点还是Worker节点上运行,以及是否受YARN监控。
SparkYarn-Client和Yarn-Cluster模式,决定了Driver是否与Spark-Submit在同一个进程中。

你可能感兴趣的:(Spark作业提交模式说明)