Hadoop - Lzo压缩的集成配置与使用详解
作者:hangge | 2024-08-22 08:28
MapReduce 中常见的数据压缩格式主要包括:DEFLATE、Gzip、Bzip2、Lz4、Lzo、Snappy。Hadoop 3.x 版本中已经默认集成了除 Lzo 外的其他所有压缩格式,它们的介绍和用法可以参考我之前写的文章(点击查看)。本文接着演示如何在 Hadoop 中集成 Lzo,使其支持 Lzo 压缩。
1,编译生成 hadoop-lzo 的 Jar 包
(2)然后将源码包解压:
unzip hadoop-lzo-master.zip
(3)进入解压后的源码包,查看里面内容如下:
cd hadoop-lzo-master ll
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 中。注意:不是覆盖,是追加。
(3)修改完一个节点的的 core-site.xml 文件后,可以执行如下命令同步到其他节点上:
注意:需要上传到集群中的所有节点里面。
(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)