在使用spark时,根据集群资源情况和任务数据量等,合理设置参数,包括但不限于以下:

参数 说明
master yarn  E-MapReduce 使用 Yarn 的模式
yarn-client:等同于 –-master yarn —deploy-mode client, 此时不需要指定deploy-mode。 
yarn-cluster:等同于 –-master yarn —deploy-mode cluster, 此时不需要指定deploy-mode。
class 作业的主类
deploy-mode client 模式表示作业的 AM 会放在 Master 节点上运行。要注意的是,如果设置这个参数,那么需要同时指定上面 master 为 yarn。
cluster 模式表示 AM 会随机的在 worker 节点中的任意一台上启动运行。要注意的是,如果设置这个参数,那么需要同时指定上面 master 为yarn。
executor-cores 每个executor使用的内核数,默认为1
num-executors 启动executor的数量,默认为2
executor-memory executor的内存大小,默认为1G
driver-cores driver使用的内核数,默认为1
driver-memory driver的内存大小,默认为1G
queue 指定了放在哪个队列里执行
spark.default.parallelism 该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能,Spark官网建议的设置原则是,设置该参数为num-executors * executor-cores的2~3倍较为合适
spark.storage.memoryFraction    该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6。也就是说,默认Executor 60%的内存,可以用来保存持久化的RDD数据。根据你选择的不同的持久化策略,如果内存不够时,可能数据就不会持久化,或者数据会写入磁盘。
spark.shuffle.memoryFraction  该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,如果发现使用的内存超出了这个20%的限制,那么多余的数据就会溢写到磁盘文件中去,如果发现使用的内存超出了这个20%的限制,那么多余的数据就会溢写到磁盘文件中去,此时就会极大地降低性能。
total-executor-cores 所有executor的总核数

(1)executor_cores*num_executors 
     表示的是能够并行执行Task的数目不宜太小或太大!一般不超过总队列 cores 的 25%,比如队列总 cores    400,最大不要超过100,最小不建议低于40,除非日志量很小。

(2)executor_cores 
     不宜为1!否则 work 进程中线程数过少,一般 2~4 为宜。

(3)executor_memory 
     一般 6~10g 为宜,最大不超过20G,否则会导致GC代价过高,或资源浪费严重。

(4)driver-memory 
     driver 不做任何计算和存储,只是下发任务与yarn资源管理器和task交互,除非你是 spark-shell,否则一般 1-2g
     
(5)如果需要对RDD进行cache,那么更多的内存,就可以缓存更多的数据,将更少的数据写入磁盘,甚至不写入磁盘。减少了磁盘IO。

(6)对于shuffle操作,reduce端,会需要内存来存放拉取的数据并进行聚合。如果内存不够,也会写入磁盘。
     如果给executor分配更多内存以后,就有更少的数据,需要写入磁盘,甚至不需要写入磁盘。减少了磁盘IO,提升了性能。

(7)对于task的执行,可能会创建很多对象.如果内存比较小,可能会频繁导致JVM堆内存满了,然后频繁GC,垃圾回收 ,minor GC和full GC.(速度很慢).内存加大以后,带来更少的GC,垃圾回收,避免了速度变慢,性能提升。

spark-submit 参数设置相关推荐

  1. spark submit参数及调优

    spark submit参数及调优 原文地址 spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ...

  2. spark submit参数及调优(转载)

    spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数. 使用格式:  ./bin/spark-submit \--c ...

  3. spark submit参数及调试

    原文:http://www.cnblogs.com/haoyy/p/6893943.html spark submit参数介绍 你可以通过spark-submit --help或者spark-shel ...

  4. Spark:spark submit参数及调优 perfect

    先看下spark运行原理流程: 我们使用spark-submit提交一个Spark作业之后,这个作业就会启动一个对应的Driver进程. 根据你使用的部署模式(deploy-mode)不同,Drive ...

  5. Spark Submit提交及参数调优

    https://www.cnblogs.com/LHWorldBlog/p/8414342.html https://www.cnblogs.com/haoyy/p/6893943.html spar ...

  6. DolphiScheduler平台上运行spark程序时,外部参数设置

    DolphiScheduler平台上运行spark程序时,外部参数设置 近期使用DS平台执行spark程序,遇到了部分参数设置的问题,代码中需要外部传入一个参数procDate(处理日期),具体设置如 ...

  7. Spark配置参数详解

    Spark基本概念 Spark是一个用于集群计算的通用计算框架,数据科学应用和数据处理. Spark项目包含多个紧密集成的组建.Spark的核心是一个对由很多计算任务组成的.运行在多个工作机器或者是一 ...

  8. Spark Submit任务提交流程

    1,简介 在上一篇博客中,我们详细介绍了Spark Standalone模式下集群的启动流程.在Spark 集群启动后,我们要想在集群上运行我们自己编写的程序,该如何做呢?本篇博客就主要介绍Spark ...

  9. 平台搭建---Spark提交应用程序---Spark Submit提交应用程序及yarn

    本部分来源,也可以到spark官网查看英文版. spark-submit 是在spark安装目录中bin目录下的一个shell脚本文件,用于在集群中启动应用程序(如***.py脚本):对于spark支 ...

  10. spark提交python程序_Spark任务提交(Spark Submit)

    Spark-Submit简介 spark-submit脚本用于在集群上启动应用程序,它位于Spark的bin目录中.这种启动方式可以通过统一的界面使用所有的Spark支持的集群管理功能,因此您不必为每 ...

最新文章

  1. python和javascript交互_python和js交互调用的方法
  2. 【实战】OpenCV钢管计数分析与方法比较
  3. [原]OpenCV2.2无法打开摄像头或读取视频的解决方法
  4. python【蓝桥杯vip练习题库】ADV-301 字符串压缩
  5. webService学习9:jquery ajax调用webservice
  6. PAL/NTSC/SECAM,这是全球现行的三种模拟技术彩色电视的制式
  7. django使用LDAP验证
  8. Nginx学习总结(13)——Nginx 重要知识点回顾
  9. IIS Express加入MIME映射
  10. 巨头卡位新房赛道,与贝壳、易居相比,房多多的底牌是什么?
  11. AUTOSAR和OSEK关系及网络管理比较
  12. 阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载
  13. 2021年焊工(初级)试题及解析及焊工(初级)实操考试视频
  14. Kubernetes 报错小结
  15. 电子计算机4个发展阶段的划分,计算机以什么划分发展阶段
  16. 美赞臣中国独立后任命朱定平为总裁;思拓凡亚洲首个技术研发卓越中心上海揭幕 | 美通社头条...
  17. java判断是否是闰年
  18. 计算机打字比赛活动策划书怎么写,打字比赛策划书范文
  19. 微信小程序跳转页面携带参数
  20. 主R 主A 什么意思

热门文章

  1. 谈谈怎样提高炼丹手速
  2. 微服务系列:服务注册与发现的实现原理、及实现优劣势比较
  3. 史上最强多线程面试44题和答案:线程锁+线程池+线程同步等
  4. Windows下基于python3使用word2vec训练中文维基百科语料资料汇总
  5. 专家:人工智能开始对现实世界产生重大影响​​
  6. SpringBoot无法找到加载类 ,应用Feign其他服务无法package两类问题
  7. SQL2012 之 创建备份计划
  8. (4)Python3笔记 之 流程控制
  9. USACO 1.2 Milking Cows (枚举)
  10. C/C++ scanf 函数中%s 和%c 的简单差别