Hadoop提供了bzip2、gzip、DEFALTE等多种传统压缩算法,亦实现了这些算法的JAVA实现。因为,既可以用FileSystem API对文件进行压缩和解压,也可以通过MapReduce输入输出格式化来实现。这些算法的缺点是:压缩格式不可分割,即不可分片!
然而,Hadoop的一个作业流程中,是由输入文件字节数与数据块的字节数(默认数据块是64MB)决定mapper启动的数量。亦即每个mapper都将接收到需要处理的数据块,称之为数据分片。于是,LZO压缩算法随之产生。
操作步骤:
1、安装lzo和lzo-devel包。
Red Hat Linux:# yum install liblzo-devel
Ubuntu:apt-get install liblzo2-devel
2、进入hadoop-lzo源码解压的路径编译:
# cd kevinweil-hadoop-lzo-6bb1b7f/
# export JAVA_HOME=/path/to/jdk
# ./setup.sh
# BUILD SUCCESSFUL ----编译成功