[hadoop] hadoop native libraries 编译
安装hadoop启动之后总有警告:Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
原因:
Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的版本。
解决方法:
一、 去网站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下载对应的编译版本,解压到hadoop安装目录的lib/native
二、本地编译
1. 下载hadoop 源码 并解压
官网下载 http://hadoop.apache.org/releases.html ,此处选择2.8.0
2. 安装配置maven

配置环境变量
mvn -v 验证

3. 打包编译
mvn package -Pdist,native -DskipTests -Dtar

构建出错

序列化工具 protobuf 未安装,安装配置protobuf .
1).github 上下载protobuf : https://github.com/google/protobuf/releases
解压

配置
./configure --prefix=/usr/local/protoc/

出现错误

安装c++ 库
yum install glibc-headers gcc-c++

再次执行配置./configure --prefix=/usr/local/protoc/
如下信息,配置成功。

执行 make && make install ,
又出错

参考了一下google 的bug, https://github.com/google/protobuf/pull/2599/commits/141a1dac6ca572056c6a8b989e41f6ee213f8445
修改 metadata_lite.h 源码

再次执行 make && make install , 没有出错信息。

配置环境变量,验证 protoc --version

至此,protobuf 安装配置成功。
继续hadoop 编译,卧槽 ,版本过高,重装为2.5.0 .

2.5.0 安装配置过程一切正常。

继续 hadoop 编译

无法执行 cmake ,安装cmake

继续 hadoop 编译

安装 zlib-devel , openssl-devel 包,再次编译hadoop.
将lib/native 下的包放到hadoop 下

编译完成后执行 hadoop checknative -a ,如下信息成功。

至此,hadoop native 编译结束。
native 文件 :
hadoop-2.8.0-native.tar.gz

浙公网安备 33010602011771号