https://blog.csdn.net/qq_41489540/article/details/109239716
正文
hadoop本身并不支持lzo压缩,故需要使用twitter提供的hadoop-lzo开源组件。hadoop-lzo需依赖hadoop和lzo进行编译
环境准备
maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)
gcc-c++
zlib-devel
autoconf
automake
libtool
通过yum安装即可,yum -y install gcc-c++ lzo-devel zlib-devel autoconf automake libtool
下载
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
安装
解压
tar -zxvf lzo-2.10.tar.gz
配置
在 lzo-2.10 目录下面依次执行下面三个命令
cd lzo-2.10
./configure -prefix=/root/soft/hadoop-2.7.2/lzo/
make
make install
编译hadoop -lzo源码
下载
windows 下载hadoop-lzo源码
https://github.com/twitter/hadoop-lzo/archive/master.zip
下载完了在本地解压, 然后修改pom.xml
版本号要和你本机的hadoop版本号对应上,
<hadoop.current.version>2.7.2</hadoop.current.version>
修改完了上传到Linux上面
然后Linux解压刚刚上传的zip文件,不会解压的看
https://blog.csdn.net/qq_41489540/article/details/109239989
配置环境变量
vim /etc/profile
然后添加
注意地址别写错了
#lzo
export C_INCLUDE_PATH=/root/soft/hadoop-2.7.2/lzo/include
export LIBRARY_PATH=/root/soft/hadoop-2.7.2/lzo/lib
#lzo//
保存之后刷新配置文件
# 刷新配置文件
[root@zjj101 lzo]# source /etc/profile
# 查看环境变量是否已经生效
[root@zjj101 lzo]# echo $C_INCLUDE_PATH
/root/soft/hadoop-2.7.2/lzo/include
编译lzo
yum方式安装Maven ,如果有Maven的话就跳过
https://blog.csdn.net/qq_41489540/article/details/109240175
进入hadoop-lzo-master目录里面,执行maven编译命令,耐心等待
mvn package -Dmaven.test.skip=true
编译完成之后
进入target,hadoop-lzo-0.4.21-SNAPSHOT.jar 即编译成功的hadoop-lzo组件
移动到指定目录
将编译好后的hadoop-lzo-0.4.20.jar 放入hadoop-2.7.2/share/hadoop/common/
[root@zjj101 common]# ls
hadoop-common-2.7.2.jar hadoop-lzo-0.4.21-SNAPSHOT.jar jdiff sources
hadoop-common-2.7.2-tests.jar hadoop-nfs-2.7.2.jar lib templates
[root@zjj101 common]#
core-site.xml增加配置支持LZO压缩
vim "/root/soft/hadoop-2.7.2/etc/hadoop/core-site.xml"
下面配置放到configuration标签内部
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
测试
重启hdfs 和yarn之后
执行一下wordcount程序
在/hadoop-2.7.2/share/hadoop/mapreduce里面是官方提供的一些示例.
执行命令
hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /wc /wcoutput
打印了一堆日志,但是看到下面的内容说明生效了
20/10/23 13:20:36 INFO input.FileInputFormat: Total input paths to process : 1
20/10/23 13:20:36 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library from the embedded binaries
20/10/23 13:20:36 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 5dbdddb8cfb544e58b4e0b9664b9d1b66657faf5]
20/10/23 13:20:37 INFO mapreduce.JobSubmitter: number of splits:1