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

下载

  1. wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz

安装

解压

  1. tar -zxvf lzo-2.10.tar.gz

配置

在 lzo-2.10 目录下面依次执行下面三个命令

  1. cd lzo-2.10
  2. ./configure -prefix=/root/soft/hadoop-2.7.2/lzo/
  3. make
  4. make install

编译hadoop -lzo源码

下载

windows 下载hadoop-lzo源码

https://github.com/twitter/hadoop-lzo/archive/master.zip

下载完了在本地解压, 然后修改pom.xml

版本号要和你本机的hadoop版本号对应上,

  1. <hadoop.current.version>2.7.2</hadoop.current.version>

修改完了上传到Linux上面

然后Linux解压刚刚上传的zip文件,不会解压的看

https://blog.csdn.net/qq_41489540/article/details/109239989

配置环境变量

vim /etc/profile
然后添加
注意地址别写错了

  1. #lzo
  2. export C_INCLUDE_PATH=/root/soft/hadoop-2.7.2/lzo/include
  3. export LIBRARY_PATH=/root/soft/hadoop-2.7.2/lzo/lib
  4. #lzo//

保存之后刷新配置文件

  1. # 刷新配置文件
  2. [root@zjj101 lzo]# source /etc/profile
  3. # 查看环境变量是否已经生效
  4. [root@zjj101 lzo]# echo $C_INCLUDE_PATH
  5. /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编译命令,耐心等待

  1. 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/

  1. [root@zjj101 common]# ls
  2. hadoop-common-2.7.2.jar hadoop-lzo-0.4.21-SNAPSHOT.jar jdiff sources
  3. hadoop-common-2.7.2-tests.jar hadoop-nfs-2.7.2.jar lib templates
  4. [root@zjj101 common]#

core-site.xml增加配置支持LZO压缩

  1. vim "/root/soft/hadoop-2.7.2/etc/hadoop/core-site.xml"

下面配置放到configuration标签内部

  1. <property>
  2. <name>io.compression.codecs</name>
  3. <value>
  4. org.apache.hadoop.io.compress.GzipCodec,
  5. org.apache.hadoop.io.compress.DefaultCodec,
  6. org.apache.hadoop.io.compress.BZip2Codec,
  7. org.apache.hadoop.io.compress.SnappyCodec,
  8. com.hadoop.compression.lzo.LzoCodec,
  9. com.hadoop.compression.lzo.LzopCodec
  10. </value>
  11. </property>
  12. <property>
  13. <name>io.compression.codec.lzo.class</name>
  14. <value>com.hadoop.compression.lzo.LzoCodec</value>
  15. </property>

测试

重启hdfs 和yarn之后

执行一下wordcount程序

在/hadoop-2.7.2/share/hadoop/mapreduce里面是官方提供的一些示例.
执行命令

  1. hadoop jar hadoop-mapreduce-examples-2.7.2.jar wordcount /wc /wcoutput

打印了一堆日志,但是看到下面的内容说明生效了

  1. 20/10/23 13:20:36 INFO input.FileInputFormat: Total input paths to process : 1
  2. 20/10/23 13:20:36 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library from the embedded binaries
  3. 20/10/23 13:20:36 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev 5dbdddb8cfb544e58b4e0b9664b9d1b66657faf5]
  4. 20/10/23 13:20:37 INFO mapreduce.JobSubmitter: number of splits:1