Spark 配置整理
Spark 的配置有很多,这里一方面总结一下官方文档中的内容,一方面将网上查到的资料中用到的针对特定问题的配置整理一下。
先看一下官网的配置:http://spark.apache.org/docs/latest/configuration.html
- val conf = new SparkConf()
- .setMaster("local")
- .setAppName("CountingSheep")
- .set("spark.executor.memory", "1g")val sc = new SparkContext(conf)
或者 你可以通过提交命令设置,这个时候 SparkConf 对象就不设置相关配置:
- ./bin/spark-submit --name "My app" --master local[4] --conf spark.shuffle.spill=false
- --conf "spark.executor.extraJavaOptions=-XX:+PrintGCDetails -XX:+PrintGCTimeStamps" myApp.jar
在提交作业的时候能设置哪些配置呢?可以通过 bin/spark-submit --help 查看
spark-submit 还会加载 conf/spark-defaults.conf 中的配置
- spark.master spark://5.6.7.8:7077
- spark.executor.memory 512m
- spark.eventLog.enabled true
- spark.serializer org.apache.spark.serializer.KryoSerializer
如何查看已经配置的配置项?
http://Spark-master:ui-port/history/application-id/environment/
需要关注的一些设置:
spark.executor.memory 默认 512M,设置executor 的 jvm的内存大小
spark.executor.extraJavaOptions 额外的jvm设置,比如说gc策略,但是这里不能设置 jvm 的内存大小
spark.executor.extraLibraryPath 设置额外的executor运行lib目录
spark.shuffle.consolidateFiles 默认 false , 如果设置成true,能够整合shuffle阶段产生的中间文件,当reduce任务比较多的时候能提高性能
spark.shuffle.spill 默认true,与下面的配置配合使用,用来限制shuffle阶段,reduce占用内存的大小,如果超过内存限制就将数据刷到磁盘
spark.shuffle.memoryFraction 默认 0.2,如果上面的配置设置为true,shuffle阶段的内存占用总的内存的比例,如果超过这个比例,就将数据存到磁盘上。如果经常将数据刷到磁盘,可以将这个比例提高。
spark.shuffle.spill.compress 默认为true,shuffle阶段将中间结果刷入磁盘是否压缩
spark.shuffle.compress 默认为true,shuffle阶段中间结果是否压缩,这两种压缩都是使用的:spark.io.compression.codec 压缩算法
spark.shuffle.file.buffer.kb 默认32,每一个在内存中的shuffle file的大小,不把中间文件都刷到磁盘,可以减少对磁盘的seek和系统调用
spark.reducer.maxMbInFlight 默认48,对于reduce端,默认的会有5个线程负责拉取shuffle的中间结果,这5个线程分享这48M的内存的缓冲空间。如果内存不太大,最好设置的小一点。
spark.shuffle.manager 默认HASH,表示使用hash-based shuffle 算法,对于spark1.1版本,可以使用SORT,sort-based shuffle
spark.eventLog.enabled 默认false,记录spark events,当application运行结束,可用于重建 web ui
spark.eventLog.dir 默认 /tmp/spark-events, 如果spark.eventLog.enabled 为true,用来存放event log的地址,可以设置成hdfs的目录
spark.io.compression.codec 默认 snappy,spark用到的压缩地方统一的压缩算法,三种可选配置:org.apache.spark.io.LZ4CompressionCodec,org.apache.spark.io.LZFCompressionCodec,
org.apache.spark.io.SnappyCompressionCodec
spark.default.parallelism 不同的模式使用的默认值不同,一般情况默认为2,使用到shuffle的任务,比如groupByKey、reduceByKey,如果用户没有设置并行度,则使用这个配置的默认并行度
spark.akka.frameSize 默认10,单位兆,akka传递消息的最大值,如果你的任务需要将比较大的结果传给driver,可以提高这个值,比如说在比较大的数据集上调用.collect()
spark.akka.threads 默认4,用于akka通信的线程数,如果集群比较大,机器内核比较多,可以增大这个值
spark.task.cpus 默认1,每个task分配的cpu
spark.task.maxFailures 默认4,task重试的次数
spark.scheduler.mode 默认FIFO,同一个SparkContext提交的jobs之间使用的调度策略,可以设置成FAIR
spark.locality.wait 默认3000,单位毫秒,为了起一个data local 的任务可以等待的时间。
spark.scheduler.revive.interval 默认 1000,单位毫秒,调度器激活task运行的时间间隔
对于在YARN集群上运行spark任务,还有一些特殊的配置需要注意:
spark.yarn.submit.file.replication 默认3,提交到yarn上的任务所需要的jar或者文件的副本数
spark.yarn.preserve.staging.files 默认false,如果设成true,将在任务运行完保存spark相关文件,比如 spark jar,app jar
spark.yarn.executor.memoryOverhead 默认384,单位兆,executor 分配的jvm内存,显然有点小
spark.yarn.driver.memoryOverhead 默认384,单位兆,driver的内存,也有点小
spark.yarn.jar 放spark jar文件的路径,当提交spark任务到yarn的时候,会将spark的jar和app的jar拷贝到hdfs的app的目录中,但是每一个任务都会用到spark的jar或者一些共用的jar包,所以,把这些共用jar包放到一个公共的位置,这样就省的每个任务都提交一次。例如:hdfs://some/path
Spark 配置整理的更多相关文章
- 【Spark学习】Apache Spark配置
Spark版本:1.1.1 本文系从官方文档翻译而来,转载请尊重译者的工作,注明以下链接: http://www.cnblogs.com/zhangningbo/p/4137969.html Spar ...
- Spark配置&启动脚本分析
本文档基于Spark2.0,对spark启动脚本进行分析. date:2016/8/3 author:wangxl Spark配置&启动脚本分析 我们主要关注3类文件,配置文件,启动脚本文件以 ...
- spark2.2.1安装、pycharm连接spark配置
一.单机版本Spark安装 Win10下安装Spark2.2.1 1. 工具准备 JDK 8u161 with NetBeans 8.2: http://www.oracle.com/technetw ...
- Spark 配置参数
SparkConfiguration 这一章节来看看 Spark的相关配置. 并非仅仅能够应用于 SparkStreaming, 而是对于 Spark的各种类型都有支持. 各个不同. 其中中文参考链接 ...
- SSH(struts+spring+hibernate)常用配置整理
SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...
- Spark配置参数详解
以下是整理的Spark中的一些配置参数,官方文档请参考Spark Configuration. Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf ...
- Code First 关系配置整理
之前EF一直有性能问题以及使用便利性问题, 终于到了EF6有了Migrations之后, 小弟也决定加入EF阵营了. 在学习FluentAPI配置关系的时候, 发现网上的好几个教程实际上博主自己都没有 ...
- [bigdata] Spark RDD整理
1. RDD是什么RDD:Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的弹性分布式数据集,这个数据集的全部或部分可以缓存在内存 ...
- Spark配置参数调优
1.配置多个executor 在项目中,由于数据量为几百万甚至千万级别,如果一个executor装载的对象过多,会导致GC很慢.项目中,我们使一个worker节点执行app时启动多个executor, ...
随机推荐
- 解码H264文件的一些基础知识
这段时间一直在进行编写H264文件的解析类,因此对于H264文件的格式有了初步的了解,官方文档也看了个大概.这篇文章主要是总结了一些为解码H264文件而需要的一些前期知识,话不多说,下面是干货,有些是 ...
- MATLAB进行假设检验
4.8.1 已知,单个正态总体的均值μ的假设检验(U检验法) 函数 ztest 格式 h = ztest(x,m,sigma) % x为正态总体的样本,m为均值μ0,sigma为标准差,显著 ...
- 洛谷 P2216 [HAOI2007]理想的正方形
P2216 [HAOI2007]理想的正方形 题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: 第一 ...
- 总结 Sublime Text 3 无法安装 Package Control 插件的解决办法
Sublime Text 是一款非常好用的轻便的编辑器,可以安装很多插件,实现IDE的很多功能,着实是程序员的利器. 我安装的 Sublime Text 3 Build 3143 ,软件汉化,软件激活 ...
- 使用JMETER进行REST API测试
我确定你在这里是因为你需要加载测试Json Rest API.这并不奇怪,因为Rest API现在越来越受欢迎. 这本指南的目的:帮助您进行负载测试一个Json的 REST API 通过一个具体的例子 ...
- WEB安全字体(Web Safe Fonts)-网页设计用什么字体兼容性好?
效果:http://sandbox.runjs.cn/show/qgdljvh4 1 Arial微软公司的网页核心字体之一,最常用的sans serif字体,当字号很小时不容易阅读.但是,大写的“I” ...
- 目前最全的浏览器/CSS选择器兼容性总结(2009-8-10更新)
2009年2月24日,Safari 4.0 beta版正式发布,Safari从它的3.2版本开始就已经支持所有的CSS选择器(包括最新的CSS3).不过为了方便大家的工作,下面提供了最新版本的CSS选 ...
- Linux上安装Docker,并成功部署NET Core 2.0
概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...
- jquery的$().each和$.each的区别
在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在d ...
- 如何更改Android的默认虚拟机地址
第一种,虚拟机已经建立 1)找到虚拟机.ini这个文件,例如: zhai.ini 寻找方法:你可以在运行SDK Manager时看到最上面显示的虚拟机存放地址 例如显示: List of existi ...