百度谷歌了很多关于编译hadoop2.6.0的文章,没有一篇让我能顺利通过编译的。于是自己摸索,编译成功,现将编译过程和将源码导入Eclipse方法公布如下。
一、Ubuntu12.04 编译Hadoop2.6.0源码
1、编译环境
Ubuntu Server 12.04 precise 64bit
JDK 1.7.0_67
protoc 2.5.0(貌似必须是该版本及其以上版本,否则会报错)
maven 3.0.4
2、安装环境
1)安装jdk
下载
sudo apt-get -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold -y install oracle-j2sdk1.7
配置环境
打开配置文件
vim /etc/profile
增加配置文件如下:
export JAVA_HOME=/usr/lib/jvm/java-7-oracle-cloudera
export CLASSPATH=.:JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
退出并保存,执行下面命令使修改生效
source /etc/profile
将系统默认的jdk修改过来update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-7-oracle-cloudera/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-7-oracle-cloudera/bin/javac 300
sudo update-alternatives --config java
sudo update-alternatives --config javac
检测配置是否生效
java -version
2)安装maven
sudo apt-get install maven
mvn --version
显示如下图则成功
3)安装ssh
sudo apt-get install openssh-server
设置root下无密码登陆
ssh-keygen -t rsa -P ''
ssh-copy-id -i /root/.ssh/id_rsa.pub 用户名@域名
4)安装protoc
不能直接通过apt-get安装,版本太低,会报错。在https://github.com/google/protobuf中下载压缩包。
tar -zxf protobuf-2.5.0.tar.gz
假如你希望编译成功后输出的目录为/root/protobuf/ 则输入如下两条命令:
./configure --prefix=/root/protobuf/
make && make install
编译成功后进入/etc/profile中添加bin路径到PATH中
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:/root/protobuf/bin:$PATH
检测配置是否完成
protoc --version
5)安装依赖库
sudo apt-get install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
6)编译hadoop2.6.0源代码
进入到hadoop源码包根目录,执行下面命令
mvn clean package -Pdist,native -DskipTests -Dtar
成功会显示BUILD SUCCESS,编译好的代码在源代码根目录下的/ hadoop-dist/target中。
二、hadoop2.6.0源代码导入Eclipse
1)安装mvn所需插件
cd /hadoop-2.6.0-src/hadoop-maven-plugins
mvn install
2)生成eclispe结构
cd /hadoop-2.6.0-src
mvn eclipse:eclipse -DskipTests
3)完成后将整个文件夹打包压缩通过WinSCP上传到windows路径中解压缩,然后打开Eclipse,[File] > [Import] > [Existing Projects into Workspace],目录选择hadoop-2.6.0-src,工程就全部导入进去了。
4)报错处理
a.很多工程会报错,几乎都是tools不对,解决办法就是删除这个tools,然后在windows中的jdk中找到tools添加进去即可。
b.在hadoop-streaming工程里报错如下
解决办法:右击工程hadoop-streaming,Build Path,Source。删除报错的资源,然后再link到hadoop2.6.0-src源码包中的相同路径下,本例中是
D:\hadoop-2.6.0-src\hadoop-yarn-project\hadoop-yarn\hadoop-yarn-server\hadoop-yarn-server-resourcemanager\conf输出路径要保持和原来相同,修改好的包如下所示: