写点什么

MapReduce 中 shuffle 阶段的数据压缩机制

发布于: 2021 年 03 月 24 日
MapReduce中shuffle阶段的数据压缩机制

在 shuffle 阶段,可以看到数据通过大量的拷贝,从 map 阶段输出的数据,都要通过网络拷贝,发送到 reduce 阶段,这一过程中,涉及到大量的网络 IO,如果数据能够进行压缩,那么数据的发送量就会少得多,那么如何了解 hadoop 当中支持文件的那些压缩算法, 已经如何配置 hadoop 的文件压缩.


1 hadoop 当中支持的压缩算法


文件压缩有两大好处,节约磁盘空间,加速数据在网络和磁盘上的传输


前面我们的 hadoop 的版本经过我们重新编译之后,我们可以看到我们的 hadoop 已经支持所有的压缩格式了,剩下的问题就是我们该如何选择使用这些压缩格式来对我们的 MapReduce 程序进行压缩


我们可以使用 bin/hadoop checknative 来查看我们编译之后的 hadoop 支持的各种压缩,如果出现 openssl 为 false,那么就在线安装一下依赖包


bin/hadoop checknativeyum install openssl-devel
复制代码



  • hadoop 支持的压缩算法:



2. 如何开启 hadoop 压缩


注意: hadoop 默认是不开启压缩模式的, 需要进行手动的配置, 才可以开启


  • 开启的第一种方式: 在代码中进行相关的设置


对 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 压缩

对 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><!--控制限制使用压缩格式 : 如果使用的是SequenceFileOutputFormat 进行输出, 建议使用 BLOCK 对一组数据进行压缩, 如果使用的其他的输出类, 建议使用 RECORD(对每一条数据进行压缩)--> <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,修改完成之后记得重启集群


发布于: 2021 年 03 月 24 日阅读数: 10
用户头像

还未添加个人签名 2021.03.07 加入

还未添加个人简介

评论

发布
暂无评论
MapReduce中shuffle阶段的数据压缩机制