spark压缩 配置
来源:互联网 发布:简述linux启动过程 编辑:程序博客网 时间:2024/06/05 07:54
压缩
相关配置
spark.rdd.compress
这个参数决定了RDD Cache的过程中,RDD数据在序列化之后是否进一步进行压缩再储存到内存或磁盘上。当然是为了进一步减小Cache数据的尺寸,对于Cache在磁盘上而言,绝对大小大概没有太大关系,主要是考虑Disk的IO带宽。而对于Cache在内存中,那主要就是考虑尺寸的影响,是否能够Cache更多的数据,是否能减小Cache数据对GC造成的压力等。
这两者,前者通常不会是主要问题,尤其是在RDD Cache本身的目的就是追求速度,减少重算步骤,用IO换CPU的情况下。而后者,GC问题当然是需要考量的,数据量小,占用空间少,GC的问题大概会减轻,但是是否真的需要走到RDDCache压缩这一步,或许用其它方式来解决可能更加有效。
所以这个值默认是关闭的,但是如果在磁盘IO的确成为问题或者GC问题真的没有其它更好的解决办法的时候,可以考虑启用RDD压缩。
- spark.broadcast.compress
默认值:true。 在发送广播变量之前是否压缩它。
Broadcast机制是用来减少运行每个Task时,所需要发送给TASK的RDD所使用到的相关数据的尺寸,一个Executor只需要在第一个Task启动时,获得一份Broadcast数据,之后的Task都从本地的BlockManager中获取相关数据。在1.1最新版本的代码中,RDD本身也改为以Broadcast的形式发送给Executor(之前的实现RDD本身是随每个任务发送的),因此基本上不太需要显式的决定哪些数据需要broadcast了。
因为Broadcast的数据需要通过网络发送,而在Executor端又需要存储在本地BlockMananger中,加上最新的实现,默认RDD通过Boradcast机制发送,因此大大增加了Broadcast变量的比重,所以通过压缩减小尺寸,来减少网络传输开销和内存占用,通常都是有利于提高整体性能的。
什么情况可能不压缩更好呢,大致上个人觉得同样还是在网络带宽和内存不是问题的时候,如果Driver端CPU资源很成问题(毕竟压缩的动作基本都在Driver端执行),那或许有调整的必要。
- spark.io.compression.codec
默认值:snappy。压缩诸如RDD分区、广播变量、shuffle输出等内部数据的编码解码器。默认情况下,Spark提供了三种选择:lz4, lzf和snappy。你也可以用完整的类名来制定。org.apache.spark.io.LZ4CompressionCodec,org.apache.spark.io.LZFCompressionCodec,org.apache.spark.io.SnappyCompressionCodec
RDD Cache和Shuffle数据压缩所采用的算法Codec,默认值曾经是使用LZF作为默认Codec,最近因为LZF的内存开销的问题,默认的Codec已经改为Snappy。
LZF和Snappy相比较,前者压缩率比较高(当然要看具体数据内容了,通常要高20%左右),但是除了内存问题以外,CPU代价也大一些(大概也差20%~50%?)
在用于Shuffle数据的场合下,内存方面,应该主要是在使用HashShuffleManager的时候有可能成为问题,因为如果Reduce分区数量巨大,需要同时打开大量的压缩数据流用于写文件,进而在Codec方面需要大量的buffer。但是如果使用SortShuffleManager,由于shuffle文件数量大大减少,不会产生大量的压缩数据流,所以内存开销大概不会成为主要问题。
剩下的就是CPU和压缩率的权衡取舍,和前面一样,取决于CPU/网络/磁盘的能力和负载,个人认为CPU通常更容易成为瓶颈。所以要调整性能,要不不压缩,要不使用Snappy可能性大一些?
对于RDD Cache的场合来说,绝大多数场合都是内存操作或者本地IO,所以CPU负载的问题可能比IO的问题更加突出,这也是为什么spark.rdd.compress 本身默认为不压缩,如果要压缩,大概也是Snappy合适一些?
- spark.io.compression.lz4.block.size
默认值:32768。LZ4压缩中用到的块大小。降低这个块的大小也会降低shuffle内存使用率。
- spark.io.compression.snappy.block.size
默认值:32768。Snappy压缩中用到的块大小。降低这个块的大小也会降低shuffle内存使用率。
- spark.rdd.compress
默认值:false。是否压缩序列化的RDD分区。在花费一些额外的CPU时间的同时节省大量的空间。
- spark压缩 配置
- spark & 文件压缩
- spark配置:spark集群
- Spark 性能相关参数配置详解-压缩与序列化篇
- Spark 性能相关参数配置详解-压缩与序列化篇
- Spark性能相关参数配置 之 压缩和序列化相关
- Spark性能相关参数配置详解-压缩与序列化篇
- spark配置
- spark配置
- Spark配置
- spark 配置
- Spark配置
- spark core 2.0 Compression 压缩.
- Hadoop,Spark :文件输出压缩
- Spark Configuration(Spark配置)
- Spark Configuration(Spark配置)
- spark-05-spark 配置参数
- 《Spark 官方文档》Spark配置
- 基于51单片机和L298N的小车制作(二)
- ES6(三)字符串的扩展
- DFS & BFS--Data Structure
- Galaxy Note8获一致好评,市场前景值得期待
- 与程序竞赛有关的数学知识点
- spark压缩 配置
- Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
- python内置函数
- 指针函数和函数指针
- 想提高软件测试技能?今天我给你仔细讲讲有什么方法!
- C数据结构-线性表之顺序表
- MyBatis查询结果封装成List
- 什么是P2P,P2P网贷?
- 编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现