如何在MRS服务中编译和使用LZO压缩算法
LZO是一种非常高效的压缩算法,相比其它Hadoop支持的压缩算法,它提供极高的解压缩速度,且解压缩速度不受压缩比影响,对压缩包制作索引以后支持文件分片操作,非常适合用于hadoop的分布式处理场景。但由于其开源License问题,MRS和开源Hadoop一样,并没有默认集成hadoop-lzo。下面,我给大家分享一下如何手动编译hadoop-lzo并配置到在Hive服务中。
一. 环境准备
准备一个绑定了EIP(弹性公网IP)的Euler操作系统的ECS,用于编译lzo、hadoop-lzo包。操作系统版本需要与你购买的MRS集群的ECS系统版本一致。
我在操作时直接使用了MRS集群的一个Master节点作为编译环境,如果你的MRS集群是生产环境,不建议这样操作。节点准备好以后,执行以下操作准备编译工具:
1. 安装gcc。用于编译lzo native library。(MRS节点已安装)
1
|
yum
install
gcc
|
2. 下载maven,并解压到/opt目录下。用于编译hadoop-lzo。
解压后指定JAVA_HOME路径,并将maven的bin目录添加到PATH环境变量。
1
2
|
export
JAVA_HOME=
/opt/client/JDK/jdk/
export
PATH=
/opt/apache-maven-3
.6.1
/bin
:$PATH
|
二. 安装lzo
下载lzo包 (例如下载2.10版本),并解压到/opt/lzo目录下
下载地址: http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
编译安装
1
2
|
.
/configure
--
enable
-shared --prefix
/usr/local/lzo-2
.10
|
添加lzo环境变量
1
2
|
export
C_INCLUDE_PATH=
/usr/local/lzo-2
.10
/include
export
LIBRARY_PATH=
/usr/local/lzo-2
.10
/lib
|
三. 下载hadoop-lzo并编译
下载hadoop-lzo,并解压到/opt/lzo目录下
下载地址:https://github.com/twitter/hadoop-lzo/tree/release-0.4.20
执行编译。这一步需要从公网下载依赖的jar包,根据网络情况,可能需要几分钟到几十分钟不等。建议给EIP分配一个较大的带宽以节省时间,华为云入网流量不收费。
1
|
mvn clean package -Dmaven.javadoc.skip=
true
|
编译后,得到hadoop-lzo-0.4.20.jar包,路径如下:/opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar
四. 拷贝包到相应节点的客户端和服务端目录(以MRS 1.9.x版本为例)
1. Master节点客户端目录(如果是HA部署,两个Master节点都需要操作)
将hadoop-lzo-0.4.20.jar包拷贝到HDFS客户端lib目录下
cd /opt/client/HDFS/hadoop/share/hadoop/common/lib cp /opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar ./ chmod 777 hadoop-lzo-0.4.20.jar chown omm:wheel hadoop-lzo-0.4.20.jar
2. Master节点HDFS/Hive服务端目录(如果是HA部署,两个Master节点都需要操作)
将hadoop-lzo-0.4.20.jar包拷贝到HDFS服务端安装目录(注意用你自己的环境里的实际值替换下面那些“x”)
cd /opt/Bigdata/MRS_1.9.x/1_x_NameNode/install/hadoop/share/hadoop/common/lib/ cp /opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar ./ chmod 777 hadoop-lzo-0.4.20.jar chown omm:wheel hadoop-lzo-0.4.20.jar
将hadoop-lzo-0.4.20.jar包拷贝到Hive服务端安装目录(依然注意路径里的那个“x”)
# 这个包给HiveServer/WebHCat等组件用 cd /opt/Bigdata/MRS_1.9.x/install/FusionInsight-Hive-2.3.3/hive/lib cp /opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar ./ chmod 777 hadoop-lzo-0.4.20.jar chown omm:wheel hadoop-lzo-0.4.20.jar # 这个包给hive的MR引擎用 cd /opt/Bigdata/MRS_1.9.x/install/FusionInsight-Hive-2.3.3/hive mkdir auxlib cp /opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar auxlib chmod -R 777 auxlib chown -R omm:ficommon auxlib # 这个包给Hive的Spark引擎用 hdfs dfs -put /opt/lzo/hadoop-lzo/hadoop-lzo-release-0.4.20/target/hadoop-lzo-0.4.20.jar hdfs://hacluster/user/hive/sparklib/jars/ chmod 666 hdfs://hacluster/user/hive/sparklib/jars/ hadoop-lzo-0.4.20.jar chown omm:hive hdfs://hacluster/user/hive/sparklib/jars/ hadoop-lzo-0.4.20.jar
五. 修改服务参数
修改HDFS服务端参数,“io.compression.codecs”值增加 “com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec”。注意不要覆盖原有的值
修改HDFS服务端参数,添加自定义参数“io.compression.codec.lzo.class”,值为“com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec”
修改Hive服务端参数,添加自定义参数“io.compression.codecs”,值为“com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec”
修改Hive服务端参数,“hive.user.aux.jars.path”值增加“file:///opt/Bigdata/MRS_1.9.x/install/FusionInsight-Hive-2.3.3/hive/auxlib/”。注意这里的路径就是上面给MR引擎拷贝的包路径。
重启Hive和HDFS相关服务。注意选上“重新启动受影响的服务或实例”。
好了,到此HDFS和Hive的LZO配置完成。
- 点赞
- 收藏
- 关注作者
评论(0)