Shuffle阶段数据的压缩机制

本文详细介绍了Hadoop中的压缩机制,包括支持的压缩算法、如何通过代码或配置文件设置压缩,以及不同压缩算法的特性。了解这些可以帮助优化Hadoop作业,减少网络传输和存储资源的消耗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在shuffle阶段,大量的数据从map阶段输出,发送到reduce阶段,这一过程中,可能会涉及到大量的网络IO。

输出数据较大时,使用hadoop提供的压缩机制对数据进行压缩,可以指定压缩的方式。减少网络传输带宽和存储的消耗

可以对map的输出进行压缩(map输出到reduce输入的过程,可以shuffle过程中网络传输的数据量)

可以对reduce的输出结果进行压缩(最终保存到hdfs上的数据,主要是减少占用HDFS存储)

1.1. hadoop当中支持的压缩算法

使用hadoop checknative来查看hadoop支持的各种压缩算法,如果出现openssl为false,那么就在线安装一下依赖包。

 

hadoop支持的压缩算法

压缩格式

工具

算法

文件扩展名

是否可切分

DEFLATE

DEFLATE

.deflate

Gzip

gzip

DEFLATE

.gz

bzip2

bzip2

bzip2

bz2

LZO

lzop

LZO

.lzo

LZ4

LZ4

.lz4

Snappy

Snappy

.snappy

 

各种压缩算法对应使用的java

压缩格式

对应使用的java

DEFLATE

org.apache.hadoop.io.compress.DeFaultCodec

gzip

org.apache.hadoop.io.compress.GZipCodec

bzip2

org.apache.hadoop.io.compress.BZip2Codec

LZO

com.hadoop.compression.lzo.LzopCodec

LZ4

org.apache.hadoop.io.compress.Lz4Codec

Snappy

org.apache.hadoop.io.compress.SnappyCodec

 

方式一:在代码中进行设置压缩

设置map阶段的压缩

Configuration configuration = new Configuration();

configuration.set("mapreduce.map.output.compress","true");

configuration.set("mapreduce.map.output.compress.codec","org.apache.hadoop.io.compress.SnappyCodec");

 

设置reduce阶段的压缩

configuration.set("mapreduce.output.fileoutputformat.compress","true");

configuration.set("mapreduce.output.fileoutputformat.compress.type","RECORD");

configuration.set("mapreduce.output.fileoutputformat.compress.codec","org.apache.hadoop.io.compress.SnappyCodec");

 

方式二:配置全局的MapReduce压缩

我们可以修改mapred-site.xml配置文件,然后重启集群,以便对所有的mapreduce任务进行压缩。

map输出数据进行压缩

<property>

<name>mapreduce.map.output.compress</name>

<value>true</value>

</property>

<property>

<name>mapreduce.map.output.compress.codec</name>

<value>org.apache.hadoop.io.compress.SnappyCodec</value>

</property>

reduce输出数据进行压缩

<property><name>mapreduce.output.fileoutputformat.compress</name>

       <value>true</value>

</property>

<property><name>mapreduce.output.fileoutputformat.compress.type</name>

<value>RECORD</value>

</property>

 <property><name>mapreduce.output.fileoutputformat.compress.codec</name>

<value>org.apache.hadoop.io.compress.SnappyCodec</value> </property>

所有节点都要修改mapred-site.xml,修改完成之后记得重启集群

 

 

 



转载于:https://www.cnblogs.com/TiePiHeTao/p/f097cc586147923ea16dce673c2e5b74.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值