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
分享到:
相关推荐
这个JAR文件需要添加到Hadoop的类路径(classpath)中,以便Hadoop集群能够识别并使用LZO压缩格式。 在实际使用Hadoop LZO时,我们需要进行以下步骤: 1. 安装和配置:首先,下载hadoop-lzo-0.4.21-SNAPSHOT.jar,...
在 Hadoop 集群中,使用 LZO 可以减小数据存储量,提高 I/O 效率,但相比于其他压缩格式如 Gzip,它提供的压缩比可能较低。 【标签】"hadoop" 显示了这个主题与 Hadoop 开源大数据处理框架密切相关。Hadoop 是一个...
- 作用:设置Reduce输出使用的压缩编码/解码器类。 例如,要在Hadoop中启用Gzip压缩,可以配置如下: ```xml <name>mapred.output.compress <value>true <name>mapred.output.compression.codec <value>...
在MapReduce中,使用Lzo压缩需设置`mapreduce.output.fileoutputformat.compress.codec`为`com.hadoop.compression.lzo.LzoCodec`。Lzo压缩速度快,但解压缩速度较慢,通常在需要快速写入数据而不太关心读取性能的...
3. **处理压缩数据**:在MapReduce作业中,必须声明使用LZO压缩,这样输入和输出的数据才能正确处理。 至于压缩包子文件的文件名称列表,包含了两个版本的LZO源代码压缩包: - **lzo-2.06.tar.gz**:这是LZO库的...
为了确保LZO已经正确配置并工作,可以创建一个简单的MapReduce任务,使用LZO压缩的数据作为输入,检查任务是否能正常运行。同时,监控系统的性能,如CPU、内存和磁盘I/O,根据实际需求进行优化。 总之,安装和配置...
该项目重新启用了与LZO压缩文件的并行性,并且还带有用于处理LZO文件的标准实用程序(输入/输出流等)。起源该项目建立在所做的出色工作的基础上。 从第41期开始,此代码库中的区别如下。 它修复了hadoop-gpl-...
4. `lzo-2.04-1.el5.rf.x86_64.rpm`:这是64位版本的LZO运行时库,对应64位系统,用于运行使用LZO压缩的应用。 在安装这些RPM包时,用户应根据自己的系统架构选择合适的版本。32位版本适用于32位操作系统,而64位...
在 Hadoop下,尤其是数据规模很大和工作负载密集的情况下,使用数据压缩显得非常重要。 压缩技术的优点包括: * 降低存储空间占用 * 提高数据传输速度 * 减少IO操作和网络数据传输时间 然而,压缩技术也存在一些...
首先,Hadoop提供了内置的压缩机制,支持多种压缩格式,如Gzip、BZip2、LZO等。这些压缩格式可以有效地减少数据在HDFS(Hadoop分布式文件系统)中的存储空间和网络传输的数据量,从而提高整体性能。在这个例子中,...
替换完成后,Hadoop在运行时会自动识别并使用新的Snappy压缩库,从而实现对Snappy压缩格式的支持。 在实际应用中,可以通过修改Hadoop配置文件(如`core-site.xml`)来指定默认的压缩算法为Snappy。例如,可以添加...
2. **MapReduce任务**:在MapReduce作业中,可以通过设置输入和输出格式的压缩选项来使用Snappy,例如设置`mapreduce.map.output.compress.codec`和`mapreduce.output.fileoutputformat.compress.codec`为Snappy的类...
Hadoop支持多种压缩编码,包括DEFLATE、Gzip、Bzip2、LZO和Snappy。这些编码各有优缺点: 1. DEFLATE(DefaultCodec):提供了一种平衡压缩和速度的选择,压缩率适中,解压速度快,且与文本处理兼容,无需修改原有...
首先,Hadoop 提供了多种数据压缩格式,包括 DEFLATE、Gzip、Bzip2、LZO 和 Snappy。每种压缩算法都有其特点。DEFLATE 是一种通用的压缩算法,可以直接使用,但压缩文件不可切分,不适用于并行处理。Gzip 也是直接...
- 每日处理的数据量相当庞大,包括6TB的扫描数据,1.5TB的输出数据,以及3TB的原始LZO压缩数据。 2. **Cloudera和其产品**: - Cloudera提供了CDH(CentOS Data Hub)版本,对应不同的Apache Hadoop版本。例如,CDH...
Lzo压缩由`LzoCodec`处理,它使用了Lzop工具的压缩格式,通过JNI(Java Native Interface)调用C++的LZO库进行高效压缩。SnappyCodec,用于Google的Snappy压缩算法,同样通过JNI与C++库交互,以提供快速的压缩和解...
- 使用LZO压缩可以提高数据传输效率,但测试中发现可能受机器资源分配不一致影响。 - 调度算法测试比较了无调度、Fair Scheduler和Capacity Scheduler三种策略,结果表明,不同调度算法对性能有明显影响。 4. **...
Elephant Bird项目提供了对LZO压缩数据的支持,包括Hadoop MapReduce任务中的输入和输出格式,使得数据在存储和传输过程中可以保持较小的体积,从而提高系统性能。 二、Protocol Buffers Google Protocol Buffers是...
12. **Compression**:提供流式压缩功能,支持Lzo和Zlib等算法,降低存储和传输成本。 13. **SequenceFileReader & SequenceFileWriter**:处理SequenceFile格式的读写操作,优化数据序列的存储与检索。 #### 关键...