hadoop 2.7支持snappy压缩配置

早期在安装集群的时候并没有需求要支持snappy压缩,所以只能后面将snappy压缩配置上去
找了很多资料,在配置hadoop支持snappy压缩的时候讲得比较简略,我照着配置一直都是snappy:false。网上找了一圈也没有找到一份比较详细的完整资料,没办法,只能硬刚了,好在最终配置成功了,在这写下来争取可以帮到更多的B站上找资料学习的童鞋。

服务器信息:CentOS 7.4、hadoop 2.7.2
工作目录:/opt/module
安装包:hadoop-2.7.2.tar.gz、hadoop-2.7.2-src.tar.gz、snappy-1.1.3.tar.gz、protobuf-2.5.0.tar.gz、jdk1.8、maven(阿里云镜像仓库)

异常信息:

**[emo@hadoop102 module]$ hadoop checknative**
**20/08/03 01:15:24 WARN bzip2.Bzip2Factory: Failed to load/initialize native-bzip2 library system-native, will use pure-Java version**
**20/08/03 01:15:24 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library**
**Native library checking:**
**hadoop:  true /opt/module/hadoop-2.7.2/lib/native/libhadoop.so.1.0.0**
**zlib:    true /lib64/libz.so.1**
**snappy:  false**
**lz4:     true revision:99**
**bzip2:   false**
**openssl: true /lib64/libcrypto.so**

建议先执行一下该命令:
yum -y install gcc-c++ build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-devua svn openssl-devel ncurses-devel

1、snappy的安装(三部曲:解压、configure、make && make install):

    wget https://src.fedoraproject.org/repo/pkgs/snappy/snappy-1.1.3.tar.gz/
    tar /opt/software/snappy-1.1.3.tar.gz -C /opt/module/
    cd /opt/module/snappy-1.1.3
    ./configure (默认安装到:/usr/local/lib,可以执行路径: --prefix=/opt/module/)
    make && make install

2、protobuf的安装很easy:

      wget http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
      tar -zxvf protobuf-2.5.0.tar.gz
      cd protobuf-2.5.0
      configure
      make && make install

默认安装目录:/usr/local/lib,当然可以自己改哈,在configure的时候执行安装路径即可,我是采用的默认安装

3、解压源码包(hadoop-2.7.2-src.tar.gz)、安装

tar -zxf /opt/software/hadoop-2.7.2-src.tar.gz -C  /opt/module/
 cd /opt/module/hadoop-2.7.2-src

执行编译(需要很长时间,提前配置好maven环境):

mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy

ps:maven打包编译大家应该都了解,知道看到一片绿,然后出来了一行: Build Success,然后会自动停止
4、native下面的包文件copy:
cd /opt/module/hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2/lib/native

将源码包这里面编译过的动态库文件全部copy到hadoop集群的native下做替换(ps:我的hadoop集群的工作目录:/opt/module/hadoop-2.7.2/):
copy hadoop的包文件(8个):
\cp -f /opt/module/hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2/lib/native /opt/module/hadoop-2.7.2/lib/native/

copy snappy的动态包文件(5个):

\cp /usr/local/lib/libsnappy* /opt/module/hadoop-2.7.2/lib/native/

总共13个文件copy完毕,记得修改文件为hadoop的用户和组,不要在/opt/module/hadoop-2.7.2/lib/native/下面copy过去的包还是root用户和组:
参考命令:
chown -R hadoop:hadoop /opt/module/hadoop-2.7.2/lib/native

如果是集群的话,记得将/opt/module/hadoop-2.7.2/lib/native同步copy到其他服务器上。
再次启动集群,执行:hadoop checknative,就可以看到:
snappy: true /opt/module/hadoop-2.7.2/lib/native/libsnappy.so.1

大功告成!!!!

posted @ 2020-08-03 20:35  Leo-Wong  阅读(1196)  评论(0编辑  收藏  举报