义务提交脚本
脚本模板
当咱们提交一个Spark作业到YARN上,通常状况下会经常使用如下的脚本模板:
参数解读
详细参数的含意如下图所示:
每个executor的最大核数
每个node的executor数 = 总核数 / 每个executor的最大cup核数,详细是经过参数
yarn.nodemanager.resource.cpu-vcores启动性能,比如该值性能为:33,参数executor-cores的值为:5,那么每个node的executor数= (33 - 1[操作系统预留])/ 5 = 6,假定集群节点为10,那么num-executors = 6 * 10 =60
该参数的值依赖于:yarn-nodemanager.reaource.memory-mb,该参数限定了每个节点的container的最大内存值。
该参数的值=yarn-nodemanager.reaource.memory-mb / 每个节点的executor数量,假设yarn的参数性能为160,那么
yarn-nodemanager.reaource.memory-mb / 每个节点的executor数量 = 160 / 6 ≈ 26GB
Spark程序提交运转环节
内存治理图解
Spark2.X的内存治理模型如下图所示:
Spark中的内存经常使用大抵包含两种类型:口头和存储。
口头内存是指用于用于shuffle、join、排序、聚合等计算的内存
存储内存是指用于在集群中耐久化和广播外部数据的内存。
在Spark中,口头内存和存储内存共享一个一致的区域。当没有经常使用口头内存时,存储内存可以失掉一切可用内存,反之亦然。如有必要,口头内存可以占用存贮存储,但仅限于总存储内存经常使用量低于某个阈值。
该设计确保了几种现实的个性。首先,不经常使用缓存的运行程序可以经常使用整个空间口头,从而防止不用要的磁盘溢出。其次,经常使用缓存的运行程序可以保管最小存储空间。最后,这种方法为各种上班负载提供了正当的开箱即用性能,而无需用户外部划分外存的专业常识。
只管有两种关系性能,但普通状况下不要求调整它们,由于自动值实用于大少数上班负载:
spark.memory.fraction自动大小为(JVM堆内存 -300MB)的一小局部(自动值为0.6)。剩下的空间(40%)保管用于用户数据结构,Spark中的外部元数据,以及在稠密和意外大的记载的状况下防止OOM失误。spark.memory.storageFraction自动大小为(JVM堆内存- 300MB)0.60.5。