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
大功告成!!!!