hadoop-2.6.0源码编译
运行hadoop环境时,常常会出现这种提示
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
意思是无法加载本地native库。
这里就需要我们自己本地进行编译hadoop源码,用生成的文件来替换原有的native库。
下面就是我整理的hadoop编译流程
首先介绍一下我的环境
centos6.5
jdk-7u79-linux-x64.tar.gz
apache-maven-3.3.9-bin.tar.gz
protobuf-2.5.0.tar.gz
hadoop-2.6.0-cdh5.12.0-src.tar.gz
接下来就进行步骤介绍
第一步,安装jdk
解压
1 tar -zxvf jdk-7u79-linux-x64.tar.gz
环境变量
1 vi /etc/profile
#JAVA_HOME export JAVA_HOME=/home/hadoop/jdk1.7.0_79 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
测试是否安装成功
source /etc/profile
java -version
第二步,安装maven
>>提君博客原创 http://www.cnblogs.com/tijun/ <<
解压
tar -zxvf apache-maven-3.3.9-bin.tar.gz
更改名称
mv apache-maven-3.3.9 maven339
环境变量
vi /etc/profile
#MAVEN_HOME export MAVEN_HOME=/home/hadoop/maven339 export PATH=$MAVEN_HOME/bin:$PATH
测试是否安装成功
source /etc/profile
mvn -version
第三步,根据多次踩坑,准备编译时需要的安装
1 yum install gcc 2 yum intall gcc-c++ 3 yum install make
或者是直接运行
yum install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
第四步安装protoc
解压编译,逐步执行
1 tar -zxvf protobuf-2.5.0.tar.gz 2 cd protobuf-2.5.0 3 ./configure --prefix=/home/hadoop/protobuf250 4 make 5 make install
环境变量
vi /etc/profile #PROTOC_HOME export PROTOC_HOME=/home/hadoop/protobuf250 export PATH=$PROTOC_HOME/bin:$PATH
测试
source /etc/profile
protoc --version
第四步,编译hadoop
1 tar -zxvf hadoop-2.6.0-cdh5.12.0-src.tar.gz 2 mv hadoop-2.6.0-cdh5.12.0 hadoop260-src 3 cd hadoop-2.6.0-src 4 mvn clean package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar
经过一段时间的等待,出现 build success ,说明编译成功。
>>提君博客原创 http://www.cnblogs.com/tijun/ <<
编译源码生成的部分都在hadoop260-src/hadoop-dist/target/目录下
将编译后的native文件夹下的东西替换到原来的native目录
1 cp -r hadoop260-src/hadoop-dist/target/hadoop-2.6.0-cdh5.12.0/lib/native/ /home/hadoop/hadoop260/lib/
同样,其他机器的文件同样替换
1 scp -r hadoop260-src/hadoop-dist/target/hadoop-2.6.0-cdh5.12.0/lib/native/ hadoop@ltt2.bg.cn:/home/hadoop/hadoop260/lib/ 2 .. 3 .. 4 ..
注意:不同的linux环境,编译过程中会有不同,有可能会出一些编译过程的错误,我将再接下来的一篇文章中整理出来,供大家参考。
>>提君博客原创 http://www.cnblogs.com/tijun/ <<