Lzo是目前Hadoop平台使用很广泛的压缩格式,但需要另外安装,使用的版本是Centos7.3,CDH6.X。
查看Hadoop支持的压缩格式
hadoop checknative
LzoCodec和LzopCodec区别
两种压缩编码LzoCodec和LzopCodec区别:
1. LzoCodec比LzopCodec更快, LzopCodec为了兼容LZOP程序添加了如 bytes signature, header等信息。
2. LzoCodec作为Reduce输出,结果文件扩展名为 ”.lzo_deflate” ,无法被lzop读取;使用LzopCodec作为Reduce输出,生成扩展名为 ”.lzo” 的文件,可被lzop读取。
3. LzoCodec结果(.lzo_deflate文件) 不能由 lzo index job 的 "DistributedLzoIndexer" 创建index。
4. “.lzo_deflate” 文件不能作为MapReduce输入。而这些 “.LZO” 文件都支持。
综上所述,map输出的中间结果使用LzoCodec,reduce输出使用 LzopCodec。
另外:org.apache.hadoop.io.compress.LzoCodec和com.hadoop.compression.lzo.LzoCodec功能一样,都是源码包中带的,生成的都是 lzo_deflate 文件。
在线Parcel安装Lzo
下载地址:修改6.x.y为对应版本
CDH6:https://archive.cloudera.com/gplextras6/6.x.y/parcels/
1. 在CDH的 Parcel 配置中,“远程Parcel存储库URL”,点击 “+” 号,添加地址栏:
CDH6:https://archive.cloudera.com/gplextras6/6.0.1/parcels/
其他离线方式:
下载parcel放到 /opt/cloudera/parcel-repo 目录下
或者
搭建httpd,更改parcel URL地址,再在按远程安装
2. 返回Parcel列表,延迟几秒后会看到多出了 GPLEXTRAS(CDH6)
下载 -- 分配 -- 激活。
3. 安装完LZO后,打开HDFS配置,找到“压缩编码解码器”,点击 “+” 号,
添加:
com.hadoop.compression.lzo.LzoCodec
com.hadoop.compression.lzo.LzopCodec
4. YARN配置,找到 “MR 应用程序 Classpath”(mapreduce.application.classpath)
添加:
/opt/cloudera/parcels/GPLEXTRAS/lib/hadoop/lib/*
5. 重启更新过期配置
虽然添加了这个方式 但是运行hadoop checknative 还是看不到lzo这个压缩格式 不过运行程序没有问题 这里不知是什么情况下次再补充