[hadoop] hadoop native libraries 编译

安装hadoop启动以后总有警告:Unable to load native-hadoop library for your platform... using builtin-Java classes where applicablehtml

缘由:
Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,所以须要本身编译64位的版本。java

解决方法:c++

1、 去网站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/  下载对应的编译版本,解压到hadoop安装目录的lib/nativegit

2、本地编译github

1. 下载hadoop 源码 并解压apache

  官网下载  http://hadoop.apache.org/releases.html ,此处选择2.8.0服务器

2. 安装配置mavenapp

配置环境变量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