1. #!/bin/bash
  2. #队列名 根据yarn的队列提交
  3. realtime_queue=root
  4. #提交的任务名
  5. my_job_name="OrderQZ"
  6. spark-shell --master yarn --deploy-mode client \
  7. --queue $realtime_queue \
  8. #总的executors数 根据数据量与自己的集群资源来分配
  9. --num-executors 35 \
  10. #每个executor的核数
  11. --executor-cores 5 \
  12. #每个executor的内存
  13. --executor-memory 19G \
  14. #diver 端jvm日志配置
  15. --conf spark.driver.extraJavaOptions=-Dlog4j.configuration=log4j-yarn.properties \
  16. --conf spark.executor.extraJavaOptions=-Dlog4j.configuration=log4j-yarn.properties \
  17. #序列化
  18. --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
  19. #数据本地化;一般会默认3s,重试5次的去分配,一旦超时失败,将会选择一个比上一个本地级别差的级别再一次分配,如果发生了数据传输,那么task首先通过blockmanager获取数据,如果本地没有数据,则通过getRemote方法从数据所在节点的blockmanager获取数据并返回至task所在节点
  20. --conf spark.locality.wait=5 \
  21. #失败重试次数
  22. --conf spark.task.maxFailures=8 \
  23. # 是否开启在webui杀死进程
  24. --conf spark.ui.killEnabled=false \
  25. #SparkContext 启动时记录有效 SparkConf信息
  26. --conf spark.logConf=true \
  27. #driver的堆外内存 内存对象分配在Java虚拟机的堆以外的内存,这些内存直接受操作系统管理(而不是虚拟机),这样做的结果就是能够在一定程度上减少垃圾回收对应用程序造成的影响。使用未公开的Unsafe和NIO包下ByteBuffer来创建堆外内存
  28. --conf spark.yarn.driver.memoryOverhead=512 \
  29. --conf spark.yarn.executor.memoryOverhead=5480
  30. #提交申请的最大尝试次数, 小于等于YARN配置中的全局最大尝试次数。
  31. --conf spark.yarn.maxAppAttempts=4 \
  32. #定义AM故障跟踪的有效时间间隔。如果AM至少在定义的时间间隔内运行,则AM故障计数将被重置。如果未配置,此功能未启用。
  33. --conf spark.yarn.am.attemptFailuresValidityInterval=1h \
  34.  
  35. --conf spark.yarn.executor.failuresValidityInterval=1h \
  36. #动态资源分配
  37. --conf spark.shuffle.service.enabled=true \
  38. --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \
  39. #推测执行
  40. --conf spark.speculation=true \
  41. --conf spark.speculation.quantile=0.9 \
  42. #shffule task数目
  43. --conf spark.sql.shuffle.partitions=178 \
  44. #,当它设置为true时,Spark SQL会把每条查询的语句在运行时编译为java的二进制代码。这有什么作用呢?它可以提高大型查询的性能,但是如果进行小规模的查询的时候反而会变慢,就是说直接用查询反而比将它编译成为java的二进制代码快。所以在优化这个选项的时候要视情况而定。
  45. --conf spark.sql.codegen=true \
  46. #默认值为false 它的作用是自动对内存中的列式存储进行压缩
  47. --conf spark.sql.inMemoryColumnarStorage.compressed=true \
  48. # join实现主要有3种,即BroadcastHashJoinExec、ShuffledHashJoinExec和SortMergeJoinExec,优先级为
  49. #1 如果canBroadcast,则BroadcastHashJoinExec;
  50. #2 如果spark.sql.join.preferSortMergeJoin=false,则ShuffledHashJoinExec;
  51. #3 否则为SortMergeJoinExec;
  52. --conf spark.sql.join.preferSortMergeJoin=true \
  53. # Spark底层shuffle的传输方式是使用netty传输,netty在进行网络传输的过程会申请堆外内存(netty是零拷贝),所以使用了堆外内存。
  54. --conf spark.reducer.maxSizeInFlight=96M
  55. /**
  56. spark.reducer.maxSizeInFlight默认值:48m
  57. 参数说明:该参数用于设置shuffle read task的buffer缓冲大小,而这个buffer缓冲决定了每次能够拉取多少数据。
  58. 调优建议:如果作业可用的内存资源较为充足的话,可以适当增加这个参数的大小(比如96m),从而减少拉取数据的次数,也就可以减少网络传输的次数,进而提升性能。在实践中发现,合理调节该参数,性能会有1%~5%的提升。
  59. 错误:reduce oom
  60. reduce task去map拉数据,reduce 一边拉数据一边聚合 reduce段有一块聚合内存(executor memory * 0.2)
  61. 解决办法:1、增加reduce 聚合的内存的比例 设置spark.shuffle.memoryFraction
  62. 2、 增加executor memory的大小 --executor-memory 5G
  63. 3、减少reduce task每次拉取的数据量 设置spark.reducer.maxSizeInFlight 24m
  64. */

spark常用提交任务的基本的参数配置的更多相关文章

  1. Spark on Yarn:任务提交参数配置

    当在YARN上运行Spark作业,每个Spark executor作为一个YARN容器运行.Spark可以使得多个Tasks在同一个容器里面运行. 以下参数配置为例子: spark-submit -- ...

  2. Spark集群模式&Spark程序提交

    Spark集群模式&Spark程序提交 1. 集群管理器 Spark当前支持三种集群管理方式 Standalone-Spark自带的一种集群管理方式,易于构建集群. Apache Mesos- ...

  3. Spark应用提交

    在 Spark 的 bin 目录中的 spark-submit 脚本用与在集群上启动应用程序.它可以通过一个统一的接口使用所有 Spark 支持的 Cluster Manager,所以您不需要专门的为 ...

  4. Spark 性能相关参数配置详解-任务调度篇

    随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...

  5. Spark学习(四) -- Spark作业提交

    标签(空格分隔): Spark 作业提交 先回顾一下WordCount的过程: sc.textFile("README.rd").flatMap(line => line.s ...

  6. spark任务提交到yarn上命令总结

    spark任务提交到yarn上命令总结 1. 使用spark-submit提交任务 集群模式执行 SparkPi 任务,指定资源使用,指定eventLog目录 spark-submit --class ...

  7. 08、Spark常用RDD变换

    08.Spark常用RDD变换 8.1 概述 Spark RDD内部提供了很多变换操作,可以使用对数据的各种处理.同时,针对KV类型的操作,对应的方法封装在PairRDDFunctions trait ...

  8. spark 常用函数介绍(python)

    以下是个人理解,一切以官网文档为准. http://spark.apache.org/docs/latest/api/python/pyspark.html 在开始之前,我先介绍一下,RDD是什么? ...

  9. Production环境中iptables常用参数配置

    production环境中iptables常用参数配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我相信在实际生产环境中有很多运维的兄弟跟我一样,很少用到iptables的这个 ...

随机推荐

  1. 乌云1000个PHP代码审计案例(1)

    前两天发现的宝藏网站:https://php.mengsec.com/ 在github上面找到了源代码:https://github.com/Xyntax/1000php,可以在自己的服务器上面搭建 ...

  2. Day1 【Scrum 冲刺博客】

    (因发作业当天没注意看作业内容,第一天的冲刺博客和第二天的同时发!!!不好意思!!!) 各个成员在 Alpha 阶段认领的任务 方晓莹 搭建社区管理系统的前端框架 登录页开发 管理员模块个人中心开发 ...

  3. 百度前端技术学院-基础-day22-24

    第二十二天到第二十四天:JavaScript里面的居民们 task1 题目: <div> <label>Number A:<input id="radio-a& ...

  4. 没有它你的DevOps是玩不转的,你信不?

    摘要:架构的选择对于DevOps的实践是至关重要的,从某种程度上来说,架构就是DevOps这场战役的粮草,它是支撑着DevOps成功落地的重要前提. 善用兵者,役不再籍,粮不三载.取用于国,因粮于敌, ...

  5. 洛谷P2423 [HEOI2012]朋友圈

    题目大意: 有\(A,B\)两个点集,每个点有点权,在\(A\)集合中,两个点之间有边满足\(a_i\ xor\ a_j\ mod\ 2 = 1\),在\(B\)集合中,两个点之间有边满足\(b_i\ ...

  6. 超详细!使用 LVS 实现负载均衡原理及安装配置详解---转

    负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学 ...

  7. Linux 开机启动程序的顺序

    1.加载BISO的硬件信息,并取得第一个开机代号 2.读取第一个开机装置的mbr的boot loader的信息 3.加载kernel操作系统核心信息,开始解压缩,并驱动所有硬件装置 4.kernel执 ...

  8. Vue--子组件相互传参

    引用了element做按钮组件 父组件 创建子组件公用的空vue变量,为pubVue,并传给需要互相传参/互相调用方法的两个子组件 <template> <div> <b ...

  9. 服务器标配 SSH 协议,你了解多少?

    年初,新冠肺炎疫情的出现,全国数千万名员工在家远程办公,使用个人设备通过家庭网络访问公司资料.因此,IT 安全团队面临了众多新挑战:如何实施更加安全的身份验证方案,以确保只有授权人员和设备才能访问公司 ...

  10. day109:MoFang:好友列表显示&添加好友页面初始化&添加好友后端接口

    目录 1.好友列表 2.添加好友-前端 3.服务端提供添加好友的后端接口 1.好友列表 1.在用户中心页面添加好友列表点击入口 html/user.html,用户中心添加好友列表点击入口,代码: &l ...