MAPREDUCE服务 MRS-常用参数:Compression
Compression
数据压缩是一个以CPU换内存的优化策略,因此当Spark内存严重不足的时候(由于内存计算的特质,这种情况非常常见),使用压缩可以大幅提高性能。目前Spark支持三种压缩算法:snappy,lz4,lzf。Snappy为默认压缩算法,并且调用native方法进行压缩与解压缩,在Yarn模式下需要注意堆外内存对Container进程的影响。
参数 |
描述 |
默认值 |
---|---|---|
spark.io.compression.codec |
用于压缩内部数据的codec,例如RDD分区、广播变量和shuffle输出。默认情况下,Spark支持三种压缩算法:lz4,lzf和snappy。可以使用完全合格的类名称指定算法,例如org.apache.spark.io.LZ4CompressionCodec、org.apache.spark.io.LZFCompressionCodec及org.apache.spark.io.SnappyCompressionCodec。 |
lz4 |
spark.io.compression.lz4.block.size |
当使用LZ4压缩算法时LZ4压缩中使用的块大小(字节)。当使用LZ4时降低块大小同样也会降低shuffle内存使用。 |
32768 |
spark.io.compression.snappy.block.size |
当使用Snappy压缩算法时Snappy压缩中使用的块大小(字节)。当使用Snappy时降低块大小同样也会降低shuffle内存使用。 |
32768 |
spark.shuffle.compress |
是否压缩map任务输出文件。建议压缩。使用spark.io.compression.codec进行压缩。 |
true |
spark.shuffle.spill.compress |
是否压缩在shuffle期间溢出的数据。使用spark.io.compression.codec进行压缩。 |
true |
spark.eventLog.compress |
设置当spark.eventLog.enabled设置为true时是否压缩记录的事件。 |
false |
spark.broadcast.compress |
在发送之前是否压缩广播变量。建议压缩。 |
true |
spark.rdd.compress |
是否压缩序列化的RDD分区(例如StorageLevel.MEMORY_ONLY_SER的分区)。牺牲部分额外CPU的时间可以节省大量空间。 |
false |