1.概述
夜深了,这是本人的第一篇技术博客,写文章不是本人的长处,也会经常去问度娘,如果本文中记录的步骤侵犯了某些博主的权利,请联系我。本文只是记录了自己的编译过程。
为什么要编译hadoop源码呢?网上各种编译好的hadoop,拿来用就好了吗!因为在用别人hadoop时,别人的编译环境跟我们的不同,在使用过程中会有些报警。报警而已嘛,可我老师是个严厉的人,让我们自己编译一下。我是个遵守纪律的好学生:)。 当然,如果您是hadoop高手,想修改hadoop源码,编译就是必需的了!此外,还有种种疑问,痛苦和收获,谁用谁知道:)!
2.编译准备
在编译源码之前,我们需要准备一下编译的环境。本次编译的准备环境如下:
2.1 硬件环境
- 惠普老电脑+虚拟机CENTOS6.0
- CPU:intel core 2
- 内存2G
- 网络连接
2.2 软件环境
- hadoop-2.5.0-src.tar.gz 源码
- apache-maven-3.0.5
- JDK 1.7
- Maven 3.0 or later
- Findbugs 1.3.9 (if running findbugs) 本次编译没有用到
- ProtocolBuffer 2.5.0
- CMake 2.6 or newer (if compiling native code)
- Zlib devel (if compiling native code)
- openssl devel ( if compiling native hadoop-pipes )
3.安装过程
3.1 maven 设置环境变量/etc/profile
export MAVEN_HOME=/opt/modules/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
echo $MAVEN_HOME
成功return /opt/modules/apache-maven-3.0.5
3.2 配置maven镜像(可省略此步)
vi /opt/modules/apache-maven-3.0.5/conf/settings.xml
3.3 配置域名解析服务器(可省略此步)
vi /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
3.4 安装gcc
sudo yum install gcc
sudo yum install gcc-c++
sudo yum install make
3.5 编译安装protoc并配置环境变量
tar -zvxf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
./configure --prefix=/usr/local/protoc/
sudo make
sudo make install
添加protobuf到环境变量(~/.bash_profile):
export PATH=.:/usr/local/protoc/bin:$PATH
记得source一下哦
3.6 安装其它依赖包
sudo yum install cmake
sudo yum install openssl-devel
sudo yum install ncurses-devel
3.7 编译hadoop源码
cd ~/app/hadoop-2.5.1-src
mvn package -DskipTests -Pdist,native
3.8 编译错误及原因分析
- 配置sudo, 最好只在一个用户名下进行操作,
- 解压包时,注意修改用户权限,否则mvn编译时会有
Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (create-testdirs) on project
- 没有设置protoc 环境变量会报错
- 编译过程记录及图片需要先在电脑上保存,不要直接复制到博客上,没有实时保存的功能,一不小心关掉,就会吓死宝宝的,各种懊恼啊。
3.9 编译成功的图片
5. 感谢老师和如下博主
http://www.cnblogs.com/luogankun/p/4083993.html
http://www.cnblogs.com/smartloli/p/4919729.html