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

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. VMware 12 与Centos 7建立共享文件夹 && vmware 15 pro过期激活秘钥

    1 vmware 15pro评估过期 网上找到的激活秘钥,激活密钥: YG5H2-ANZ0H-M8ERY-TXZZZ-YKRV8(亲试有效)UG5J2-0ME12-M89WY-NPWXX-WQH88U ...

  2. 个人作业三——ATM管理系统

    一 作业信息 博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/ 作业要求 https://edu.cnblogs.com/campus/a ...

  3. 排序算法-Java实现快速排序算法

  4. Redis5 压力测试结果反馈报告

    Redis 相信很多人都用过了,关于性能啥的,网上一堆报告,闲得蛋痛,又随便测测写写一些狗屁文章,来刷存在感了. 安装最新Redis5.0.10 Redis 官方地址 下载页默认是redis6.0,5 ...

  5. STL——容器(Map & multimap)的插入与迭代器

    1. 容器(Map & multimap)的插入 map.insert(...);    //往容器插入元素,返回pair<iterator,bool> map中插入元素的四种方式 ...

  6. 二、TestNG的Hello World

    创建第一个TestNG的例子 1.创建一个TestNG的类 选择项目路径"右键"--NEW--Other 选择TestNG cLass(如果没有这个选项是testng没有配置成功) ...

  7. ssh远程服务器不通

    1.关闭防火墙 service iptables status service iptables stop 2.在/etc/hosts文件添加远程服务器信息(连接的两端都添加) 服务器1(racdb1 ...

  8. Unity 黑暗之光 笔记 第一章

    第一章 设计游戏开始进入场景 1.设置相机视野同步 选中要调整的相机 GameObject - Align With View(快捷键 Ctrl + Shift + F)

  9. Graphql Tutorials(Episode 02)

    1.前言 我们在上篇已经了解Graphql的使命以及Graphql的概况,接下来,我们跑起来另外一个Helloworld来开启继续学习. 2.Helloworld(使用Graphql 原生API) 这 ...

  10. Java中instanceof注意的地方

    instanceof只能用于对象的判断,不能用于基本类型的判断,以下代码会编译不通过 'A' instanceof Character instanceof特有的规则:若左操作数是null,结果就直接 ...