返回 导航

大数据

hangge.com

Hadoop - Lzo压缩的集成配置与使用详解

作者:hangge | 2024-08-22 08:28
    MapReduce 中常见的数据压缩格式主要包括:DEFLATEGzipBzip2Lz4LzoSnappyHadoop 3.x 版本中已经默认集成了除 Lzo 外的其他所有压缩格式,它们的介绍和用法可以参考我之前写的文章(点击查看)。本文接着演示如何在 Hadoop 中集成 Lzo,使其支持 Lzo 压缩。

1,编译生成 hadoop-lzo 的 Jar 包

(1)首先我们访问 hadoop-lzoGitHub 主页(点击访问),将源码包下载下来:

(2)然后将源码包解压:
unzip hadoop-lzo-master.zip

(3)进入解压后的源码包,查看里面内容如下:
cd hadoop-lzo-master
ll

(4)在编译打包前,我们需要执行如下命令安装必要的工具库,否则打包时会报错。
yum install -y svn ncurses-devel
yum install -y gcc gcc-c++ make cmake
yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
yum install -y lzo lzo-devel lzop autoconf automake cmake

(5)安装后我们执行如下命令开始打包:
mvn clean package -Dmaven.test.skip=true

(6)打包完毕后在 target 目录下会生成 hadoop-lzo-0.4.21-SNAPSHOT.jar 这个 Jar

2,Hadoop 配置

(1)首先我们将前面生成的 Jar 包复制到 Hadoop 集群的 hadoop 目录下的 share/hadoop/common 目录中:
注意:需要上传到集群中的所有节点里面。

(2)然后修改 hadoop 集群中的 core-site.xml 文件,将下面内容添加到 core-site.xml 中。注意:不是覆盖,是追加。
<!-- 配置使用的各种压缩算法的编/解码器 -->
<property>
	<name>io.compression.codecs</name>
	<value>
		org.apache.hadoop.io.compress.GzipCodec,
		org.apache.hadoop.io.compress.DefaultCodec,
		org.apache.hadoop.io.compress.DeflateCodec,
		org.apache.hadoop.io.compress.BZip2Codec,
		org.apache.hadoop.io.compress.SnappyCodec,
		org.apache.hadoop.io.compress.Lz4Codec,
		com.hadoop.compression.lzo.LzoCodec,
		com.hadoop.compression.lzo.LzopCodec
	</value>
</property>

<!-- 配置Lzo编解码器相关参数 -->
<property>
	<name>io.compression.codec.lzo.class</name>
	<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>

(3)修改完一个节点的的 core-site.xml 文件后,可以执行如下命令同步到其他节点上:
scp -rq core-site.xml node2:/usr/local/hadoop/etc/hadoop/
scp -rq core-site.xml node3:/usr/local/hadoop/etc/hadoop/

3,Lzo 压缩的使用测试

(1)首先准备好测试数据和 MapReduce 任务Jar包,具体可以参考我之前的文章:

(2)接着我们使用如下命令提交任务,这里我们使用 Lzo 压缩格式对 Reduce 输出结果进行压缩:
hadoop jar hadoop-0.0.1-SNAPSHOT-jar-with-dependencies.jar WordCountJob -Dmapreduce.output.fileoutputformat.compress=true -Dmapreduce.output.fileoutputformat.compress.codec=com.hadoop.compression.lzo.LzopCodec /words.dat /out/compress_lzo

(3)任务执行完毕后,查看最终结果文件只有 57MB
评论

全部评论(0)

回到顶部