LZO压缩格式,不支持hadoop平台,需要安装hadoop-lzo组件,才可以让hadoop平台使用LZO压缩格式!
1、安装组件
将hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/,之后分发到集群!
2、配置core-site.xml
<property> <name>io.compression.codecs</name> <value> org.apache.hadoop.io.compress.GzipCodec, org.apache.hadoop.io.compress.DefaultCodec, org.apache.hadoop.io.compress.BZip2Codec, org.apache.hadoop.io.compress.SnappyCodec, com.hadoop.compression.lzo.LzoCodec, com.hadoop.compression.lzo.LzopCodec </value> </property> <property> <name>io.compression.codec.lzo.class</name> <value>com.hadoop.compression.lzo.LzoCodec</value> </property>
2.1 Lzo 与 Lzop
①LZOP依赖于LZO,LZOP是LZO的升级版
②LZO是原生的LZO压缩格式,不支持切片!
LZOP在LZO的基础上允许我们使用一个为压缩文件创建索引的程序,为每个压缩文件生成索引。
-------基于索引,对压缩文件进行切片!
如果使用了LZOP但是,没有创建索引,也是无法切片!
LZOP压缩格式,生成的压缩文件的后缀为.lzo
④如果MR程序的输入,读取的.lzo.deflate格式的数据,那么可能出现乱码
扫描二维码关注公众号,回复:
10229027 查看本文章
总结: 在shuffle阶段,可以使用lzo,但是在reduce的输出和map的输入阶段,使用lzop!
3、使用命令操作
3.1 压缩输出文件
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount \
-Dmapreduce.output.fileoutputformat.compress=true \
-Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec \
/data /output
-D xxxxx 意味着给这条命令附上属性值,这里就是开启压缩和设置lzop压缩格式
3.2输入文件为lzo格式
3.2.1在文件目录下建立索引
hadoop jar /opt/module/hadoop-2.7.2/share/hadoop/common/hadoop-lzo-0.4.20.jar com.hadoop.compression.lzo.DistributedLzoIndexer /output/part-r-00000.lzo