[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