MAPREDUCE服务 MRS-常用参数:Compression

时间:2023-11-02 19:23:18

Compression

数据压缩是一个以CPU换内存的优化策略,因此当Spark内存严重不足的时候(由于内存计算的特质,这种情况非常常见),使用压缩可以大幅提高性能。目前Spark支持三种压缩算法:snappy,lz4,lzf。Snappy为默认压缩算法,并且调用native方法进行压缩与解压缩,在Yarn模式下需要注意堆外内存对Container进程的影响。

表27 参数说明

参数

描述

默认值

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

support.huaweicloud.com/cmpntguide-mrs/mrs_01_1931.html