问题导读:
1.获取cdh5.0.0源码,你认为需要做哪些准备,需要安装哪些软件?
2.如何通过maven获取源码?
3.如何编译源码?
1、安装Maven
首先下载Maven软件包,
下载地址为:
http://apache.fayea.com/apache-m ... en-3.1.1-bin.tar.gz
百度网盘:
apache-maven-3.2.1.zip
链接:http://pan.baidu.com/s/1jG9QhWa 密码:vmee
下载后解压,设置MAVEN_HOME和PATH变量。设置好后,可以使用mvn -version检查是否安装成功。
解压命令:
- tar -zvxf apache-maven-3.1.1-bin.tar.gz
复制代码
移至/usr/local下: #mvapache-maven-3.1.1 /usr/local/maven maven装在/usr/local目录下。 #vi /etc/profile
在最后一行加入:
export MAVEN_HOME=/usr/local/ maven export PATH=$PATH:$MAVEN_HOME/bin 保存后退出,执行:
source /etc/profile
查看是否安装成功。
#mvn –version
2、安装autotool,CMake等依赖包
如果已经安装,可忽略相应的包。
sudo yum install autoconf automake libtool ant gcc gcc-c++ make cmake openssl-devel,ncurses-devel
若安装遇到问题,推荐另外一篇
从零教你在Linux环境下(ubuntu)如何编译hadoop2.4
3、安装protobuf2.5
下载地址http://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
解压: tar jxvf protobuf-2.5.0.tar.gz
次执行:./configure, make, makeinstall,这三个命令安装ProtoBuffer
使用protoc --version检查ProtoBuffer是否安装成功
如果出现:
protoc: error while loading sharedlibraries: libprotobuf.so.7: cannot open shared object file: No such file ordirectory错误
这是因为系统找不到lib库
编辑/etc/ld.so.conf 文件
#Vim /etc/ld.so.conf
修改如下: include /etc/ld.so.conf.d/*.conf /usr/local/lib
然后ldconfig
再次执行protoc –version
libprotoc 2.4.1
标明protobuf安装成功。
上面软件的安装,如果遇到问题,推荐查看另外一篇:从零教你在Linux环境下(ubuntu)如何编译hadoop2.4
4、先获取源码
先通过mvn获取源码 cd hadoop-2.3.0-cdh5.0.1/src/hadoop-maven-plugins mvn install 完成后, cd hadoop-2.3.0-cdh5.0.1/src mvn eclipse:eclipse –DskipTests 获取源码过程中如果出现如下错误: Failed to execute goalorg.apache.maven.plugins:maven-antrun-plugin:1.6:run (make) on projecthadoop-common: 解决方法如下: 使用这个命令:mvn org.apache.maven.plugins:maven-eclipse-plugin:2.6:eclipse –DskipTests 或者:通过yum安装 zlib1g-dev
5、编译源码
然后开始编译源码:
在src 目录下执行
mvn clean install –DskipTests
或者
mvn package -Pdist,native -DskipTests -Dtar
这个要等待很长时间,如果中间出现停掉,可以重新执行该命令,会继续上次下载编译。
由于maven国外服务器可能连不上,先给maven配置一下国内镜像,在maven目录下,conf/settings.xml,在<mirrors></mirros>里添加,原本的不要动
- <mirror>
- <id>nexus-osc</id>
- <mirrorOf>*</mirrorOf>
- <name>Nexusosc</name>
- <url>http://maven.oschina.net/content/groups/public/</url>
- </mirror>
复制代码
同样,在<profiles></profiles>内新添加
- <profile>
- <id>jdk-1.7</id>
- <activation>
- <jdk>1.4</jdk>
- </activation>
- <repositories>
- <repository>
- <id>nexus</id>
- <name>local private nexus</name>
- <url>http://maven.oschina.net/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>nexus</id>
- <name>local private nexus</name>
- <url>http://maven.oschina.net/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
复制代码
编译过程会下载所需文件,并且持续很长时间。
编译成功后会生成一个tar包,如下图所示:
编译后的路径在
hadoop-2.3.0-cdh5.0.0/src/hadoop-dist/target
目录下。
内容如下:
进入编译后的hadoop-2.3.0-cdh5.0.0/bin目录。可以查看Hadoop版本
#./Hadoop version
|