spark sumbit相关

spark submit 是spark提交job的命令
spark 有多种 运行模式 local yarn standalone 我们这里主要针对常用的yarn模式说明下参数配置

1、提交模板

bin/spark-submit
--master
--deploy-mode
--class
--num-executors
--executor-memory
--executor-cores
jar的位置

2、Executor内存分配

Yarn集群管理模式中,Spark 以Executor Container的形式在NodeManager中运行
Executor的内存由Heap内存和设定的Off-heap内存组成。

1、Heap内存

这个内存有 --executor-memory指定 指定的内存为JVM最大分配的堆内存 一般是在4-8G较为合适
heap内存组成如下图


spark sumbit相关_第1张图片
微信截图_20181218152931.png
2、 Off-heap (Memory Overhead)

Executor 中,另一块内存为由“spark.yarn.executor.memoryOverhead”指定的Java Off-heap内存,此部分内存主要是创建Java Object时的额外开销,Native方法调用,线程栈, NIO Buffer等开销(Driect Buffer)。此部分为用户代码及Spark 不可操作的内存,不足时可通过调整参数解决, 无需过多关注

2、core的配置

core一般在2-4个较为合适
给executor 分配core是 用 --executor-cores 参数进行分配
有时他会被设置上限 被yarn-site.xml中


      yarn.scheduler.maximum-allocation-vcores
      4
 

这个说明core的数量最大为4个

参考资料:https://www.jianshu.com/p/10e91ace3378

3、yarn client和cluster

1、yarn cluster

spark-submit在提交的时候请求到ResourceManager,请求来启动ApplicationMaster,ResourceManager接收到请求后会分配一个container,在某个NodeManager上启动ApplicationMaster,ApplicationMaster(AM)启动后会反过来向ResourceManager进行通讯,其实这个ApplicationMaster就相当于是driver,AM找RM请求container,启动excutor,然后RM会分配一批container,用于启动executor,AM链接其他的NM,来启动executor,这里的NM相当于worker,executor向AM反向注册。ResourceManager相当于之前的master。

2、yarn client

spark-submit在提交的时候发送给RM,请求启动AM,分配一个container,在某个NM上,启动AM,但是这里的AM只是一个ExecutorLauncher,功能是很有限的。AM启动后会找RM申请container,启动executor,AM链接其他的NM,用container的资源来启动executor。executor会反向注册到本地的driver上。

3、区别

yarn-cluster的driver相当于就是在NodeManager上的某一个ApplicationMaster;yarn-client的driver还是在本地启动的一个进程,在NodeManager启动的ApplicationMaster只是一个ExecutorLauncher,ExecutorLauncher只会向ResourceManager申请资源,然后用container资源去链接其他的NodeManager,然后去启动executor,executor启动后会反向注册到提交应用程序的本地客户端的driver进程上,通过本地客户端的driver进程里面的DAGScheduler、TaskScheduler会大量进行task的调度,发送到NodeManager上的executor上去执行。


spark sumbit相关_第2张图片
3748075-e1c5d002b6aea71d.png

参考资料:https://www.jianshu.com/p/6b796a5c3e80

你可能感兴趣的:(spark sumbit相关)