Hadoop2.6.2 编译

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

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

你可能感兴趣的:(hadoop)