Hadoop2.6.2 编译

来源:互联网 发布:网络理财平台排名 编辑:程序博客网 时间:2024/04/27 17:13

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.0zlib:    true /lib64/libz.so.1snappy:  false lz4:     true revision:99bzip2:   false openssl: true /usr/lib64/libcrypto.so

忙了大半天,不容易啊!!

0 0
原创粉丝点击