您的位置:首页 > 运维架构

Hadoop2.6.2 编译

2016-04-09 12:41 579 查看

1.Hadoop2.0 之后依赖 protobuf 实现RPC,因此要先安装依赖

在hadoop-common-project 下


maven package -DskipTests


编译时会发现缺少依赖包protoc,并提示依赖的版本,可以修改hadoop-common-project 下 pom.xml 文件里边具体的版本(你本机安装的版本),以通过编译。

找到定义处的文件的方法:

在hadoop - src 目录下

find . "*.xml" | xargs fgrep protobuf.version


其实是在:

./hadoop-project/pom.xml 里配置的


如果没有安装:

下载protobuf https://github.com/google/protobuf 安装:
unzip protobuf-2.3.0.zip
cd protobuf-2.3.0
./configure
make
make check
make install


突然发现直接在

hadoop-2.6.2-src/hadoop-common-project/hadoop-common

下直接执行:

mvn package -DskipTests

mvn会下载protobuf的的依赖!!

这样或许前面的白搞了?? 希望其他人试试!!

2. 本地库测试

bin/hadoop checknative


发现这些本地库都没有:这样的话在调用HDFS API 时会出现问题。

Native library checking:
hadoop:  false
zlib:    false
snappy:  false
lz4:     false
bzip2:   false
openssl: false


编译native:在hadoop src目录下(保证protobuf安装配置完成还要安装cmake:yum install cmake)

export MAVEN_OPTS=-Xmx500m;mvn  package -Pdist,native  -DskipTests  -Dtar


最后在

hadoop-2.6.2-src/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib


下可以找到本地库的全部文件。

拷贝到线上部署环境:

cp hadoop-2.6.2-src/hadoop-common-project/hadoop-common/target/native/target/usr/local/lib/* /Hagrid/hadoop-2.6.2/lib/native


拷贝后再bin/hadoop checknative:

hadoop:  true /Hagrid/hadoop-2.6.2/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
snappy:  false
lz4:     true revision:99
bzip2:   false
openssl: true /usr/lib64/libcrypto.so


忙了大半天,不容易啊!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: