`
BlackWing
  • 浏览: 196595 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hadoop使用lzo压缩输出

阅读更多
Hadoop处理大量的数据,如果期间的输出数据、中间数据能压缩存储,对系统的I/O性能会有提升。

参考了网上不少资料,发现综合考虑压缩、解压速度、是否支持split,目前lzo是最好的选择。lzo最初在google code上托管,但后来转移到github了,所以以github为准。地址为:
https://github.com/kevinweil/hadoop-lzo


步骤如下:

1. 安装lzo
我的是centos,所以yum search lzo后,安装对应版本的devel包。

2. 到github下载hadoop-lzo的tar包安装
https://github.com/kevinweil/hadoop-lzo/downloads


准备条件:编译hadoop-lzo得有gcc、ant

解压后,到hadoop-lzo目录下,运行:
ant compile-native tar

原无意外的话,就会生成hadoop-lzo-0.4.15.jar

3. 把hadoop-lzo-0.4.15.jar拷贝到hadoop的lib目录下,此外把
hadoop-lzo/build/native/Linux-amd64-64/lib下的.a、.la、so等文件拷贝到hadoop的lib/native/Linux-amd64-64下,之后重启hadoop


那么就可以在程序中,把输出结果通过lzo压缩:
SequenceFileOutputFormat.setOutputCompressionType(job, CompressionType.BLOCK);
		SequenceFileOutputFormat.setCompressOutput(job, true);
		SequenceFileOutputFormat.setOutputCompressorClass(job, LzoCodec.class);


hadoop读取这些文件时,会自动解压。


hadoop上比较好的压缩库,都是native方式,配置起来挺麻烦的。
配置过程中,就老提示:Could not load native gpl library

文件该复制都复制了,最终的解决办法是在eclipse中,右击项目--build path,选择libraries--点击hadoop-lzo-0.4.15.jar,展开后,双击其下的:Native library location,选择编译好的hadoop-lzo的native文件所在路径,我填的是:

hadoop-lzo/build/native/Linux-amd64-64/lib

发现压缩后的文件大概为原来的50%。

最后,附上官方的hadoop—lzo配置说明:
https://github.com/kevinweil/hadoop-lzo/blob/master/README.md
http://code.google.com/a/apache-extras.org/p/hadoop-gpl-compression/wiki/FAQ?redir=1


--------------------------------------------------------------------

补充:在red hat 4下,yum install的是1.0版本的lzo,要升级成ver 2的才行。下载rpm包安装:
wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el4/en/x86_64/dag/RPMS/lzo-2.04-1.el4.rf.x86_64.rpm  
wget ftp://ftp.univie.ac.at/systems/linux/dag/redhat/el4/en/x86_64/dag/RPMS/lzo-devel-2.04-1.el4.rf.x86_64.rpm 

rpm -ivh lzo-2.04-1.el4.rf.x86_64.rpm
rpm -ivh lzo-devel-2.04-1.el4.rf.x86_64.rpm


详情请参考这位xd的文章:
http://blog.csdn.net/kalaamong/article/details/7275185
分享到:
评论

相关推荐

    hadoop-lzo-0.4.20.jar

    hadoop支持LZO压缩配置 将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/ core-site.xml增加配置支持LZO压缩 <name>io.compression.codecs org.apache.hadoop.io....

    配置hadoop支持LZO和snappy压缩.pdf

    配置hadoop支持LZO和snappy压缩

    hadoop-lzo-0.4.21-SNAPSHOT.jar

    hadoop-lzo-0.4.21-SNAPSHOT.jar是hadoop数据压缩lzo工具包

    hadoop-lzo-0.4.20-SNAPSHOT.jar

    编译后的hadoop-lzo源码,将hadoop-lzo-0.4.21-SNAPSHOT.jar放到hadoop的classpath下 如${HADOOP_HOME}/share/hadoop/common。hadoop才能正确支持lzo,免去编译的烦恼

    hadoop-lzo-0.4.13.jar

    hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包 hadoop-lzo-0.4.13.jar 依赖包

    hadoop-lzo-master.zip

    hadoop lzo 压缩算法的所有工程,包括hadoop-lzo-master,编译好之后的target文件夹和hadoop-lzo-0.4.20-SNAPSHOT.jar文件。复制到eclipse中,可以直接使用lzo压缩算法。

    hadoop-lzo-master

    将生成的 build/hadoop-lzo-0.4.15.jar cp 到 /usr/local/hadoop-1.0.2/lib 测试解压程序 bin/hadoop jar /usr/local/hadoop-1.0.2/lib/hadoop-lzo-0.4.15.jar ...

    hadoop-lzo-0.4.15.jar

    hadoop2 lzo 文件 ,编译好的64位 hadoop-lzo-0.4.15.jar 文件 ,在mac 系统下编译的,用法:解压后把hadoop-lzo-0.4.15.jar 放到你的hadoop 安装路径下的lib 下,把里面lib/Mac_OS_X-x86_64-64 下的所有文件 拷到 ...

    hadoop-lzo-0.4.15.tar.gz

    hadoop-lzo-0.4.15.tar.gz

    2.Hadoop-lzo.7z lzo源码+包

    hdfs默认不支持lzo压缩,需要通过将lzo源码融入hadoop源码,重新编译hadoop源码;或者编译lzo源码生成jar,作为插件使用

Global site tag (gtag.js) - Google Analytics