[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



posted @ 2017-05-07 09:49  snow__wolf  阅读(689)  评论(0编辑  收藏  举报