MR设置输出压缩算法Lzop,LzoCodec vs LzopCodec
hadoop MapReduce的输出压缩算法的设置(四种方法)
// 优化措施一:压缩MapReduce的输出结果-->使用Lzop压缩-->输出空间占比小
FileOutputFormat.setCompressOutput(job, true); //setOutputCompressorClass
// 使用输出文件压缩,设置reduce输出的压缩算法:Lzop压缩
FileOutputFormat.setOutputCompressorClass(job, LzopCodec.class);
2、Configuration对象设置
// 获取job的实例
Job job = Job.getInstance();
// 1、配置文件获取
Configuration conf = this.getConf();
// 优化手段::压缩输出文件
conf.set(FileOutputFormat.COMPRESS, "true");
conf.set("mapreduce.output.fileoutputformat.compress.codec", LzopCodec.class.getName());
3、mapred-site.xml文件配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> #中间阶段的压缩 <property> <name>mapreduce.map.output.compress</name> <value>true</value> <description>Map是否开启输出压缩</description> </property> <property> <name>mapreduce.map.output.compress.codec</name> <value>com.hadoop.compression.lzo.LzoCodec</value> <description>Map输出压缩算法:lzo</description> </property> #最终阶段的压缩 <property> <name>mapreduce.output.fileoutputformat.compress</name> <value>true</value> <description>Reduce是否启用输出压缩</description> </property> <property> <name>mapreduce.output.fileoutputformat.compress.codec</name> <value>com.hadoop.compression.lzo.LzopCodec</value> <description>Reduce输出压缩算法:lzop</description> </property> </configuration>
|
4、通过配置参数进行传值
1 2
| -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec
|
LzoCodec 与 LzopCodec 的区别
- LzoCodec比LzopCodec更快, LzopCodec为了兼容LZOP程序添加了如 bytes signature, header等信息
- 如果使用 LzoCodec作为Reduce输出,则输出文件扩展名为”.lzo_deflate”,它无法被lzop读取;如果使用LzopCodec作为Reduce输出,则扩展名为”.lzo”,它可以被lzop读取
- 生成lzo index job的”DistributedLzoIndexer“无法为 LzoCodec,即 “.lzo_deflate”扩展名的文件创建index
- ”.lzo_deflate“文件无法作为MapReduce输入,”.LZO”文件则可以。
- 综上所述得出最佳实践:map输出的中间数据使用 LzoCodec,reduce输出使用 LzopCodec
参考链接:
https://blog.csdn.net/zhu_xun/article/details/21874293
https://blog.csdn.net/leys123/article/details/51982592/