Hadoop经常用于处理大量的数据,如果期间的输出数据、中间数据能压缩存储,对系统的I/O性能会有提升。综合考虑压缩、解压速度、是否支持split,目前lzo是最好的选择。下面主要介绍在Cloudera中如何配置lzo。
手工编译配置
手工对lzo进行编译和对集群进行配置的,可以参考Hadoop 2.2.0安装和配置lzo。
Cloudera中配置
添加parcel源,下载,分配,激活
- 在cloudera manager中修改
远程 Parcel 存储库 URL
,添加http://archive.cloudera.com/gplextras/parcels/latest
。 - 在
主机--Parcel
tab下,点击检查新parcel
按钮,左侧筛选器
会出现HADOOP_LZO
,然后下载、分配、激活。分配是将此parcel分发到各个机器中,激活是在cloudera/parcels/
目录下建立对相关parcel的软链接。
HDFS配置
在io.compression.codecs
中添加com.hadoop.compression.lzo.LzoCodec
, com.hadoop.compression.lzo.LzopCodec
。
yarn配置
mapreduce.admin.user.env
中添加hadoop_lzo链接:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/native
。yarn.app.mapreduce.am.admin.user.env
中添加hadoop_lzo链接:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/native
。mapreduce.application.classpath
中添加hadoop_lzo lib:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/*
。yarn.application.classpath
中添加hadoop_lzo lib:/opt/cloudera/parcels/HADOOP_LZO/lib/hadoop/lib/*
。
oozie
oozie libpath中可能需要添加hadoop_lzo.jar。
其他模块
其他跑在yarn中的服务,只要跟随集群重启即可。
参考:
- Hadoop 2.2.0安装和配置lzo:http://www.iteblog.com/archives/992
- Cloudera Using the LZO Parcel:
http://www.cloudera.com/content/www/en-us/documentation/archive/manager/4-x/4-8-3/Cloudera-Manager-Installation-Guide/cmig_install_LZO_Compression.html - 另外有lz4压缩算法,在压缩率近似的情况下,效率更高,也可以考虑。
https://code.google.com/p/lz4/ - hadoop-lzo.jar和hadoop-gpl-compression.jar区别:http://guoyunsky.iteye.com/blog/1289475