hadoop源代码编译
1. 如何编译Apache Hadoop2.4.0源代码
我估计你是编译那个按钮都不能点,
是这样的,VS和VC有个很大的区别,VS需要
被编译的对象必须形成一个PROJECT才行,意思就是,你直接打开一个CPP的文件,绝对是编译不了,只能先建立一个工程,再把文件加进去,然后编译的时候是编译整个工程。具体
2. 如何在CentOS6.5下编译64位的Hadoop2.x
一、预先安装必要软件
1、需要的软件:java, svn, autoconf, automake, libtool, ncurses-devel, openssl-devel, gcc, lzo-devel, zlib-devel, znt, maven, protobuf, cmake
检测系统中是否已安装了某一软件命令:rpm -qa|grep 软件名,如检测系统中是否安装了svn:
$ rpm -qa|grep svn
2、如果已安装,则跳过,如果没有安装,用命令:yum install svn进行安装,如:
$ yum install svn
如果yum命令安装失败(找不到相应的包),则需手动下载相应的软件包进行安装,比如maven, protobuf这两个个软件;
二、安装maven
1、软件包:apache-maven-3.0.5-bin.tar.gz
不要使用最新的Maven3.1.1,与Maven3.0.x存在兼容性问题,所以老是出现java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之类的错误。选择3.0.5版本:apache-maven-3.0.5-bin.tar.gz
将apache-maven-3.0.5-bin.tar.gz移动到/usr目录(软件包所在目录):
# mv ./apache-maven-3.0.5-bin.tar.gz /usr
进入/usr目录,解压(/usr目录):
# tar –zxvf apache-maven-3.0.5-bin.tar.gz ./
删除解压后的压缩包(/usr目录):
# rm –rf apache-maven-3.0.5-bin.tar.gz
将/usr / apache-maven-3.0.5/bin加到环境变量中
# vi /etc/profile
在PATH行的最后加上“:/usr/apache-maven-3.0.5/bin”
2、使配置生效:
# source /etc/profile
验证是否安装成功:
# mvn –version
三、安装protobuf
1、软件包:protobuf-2.5.0.tar.gz
将protobuf-2.5.0.tar.gz移动到/usr目录(软件包所在目录):
# mv ./ protobuf-2.5.0.tar.gz /usr
进入/usr目录,解压(/usr目录):
# tar –zxvf protobuf-2.5.0.tar.gz ./
删除解压后的压缩包(/usr目录):
# rm –rf protobuf-2.5.0.tar.gz
进入/usr/protobuf-2.5.0目录:
# cd /usr/protobuf-2.5.0
2、依次执行下列命令:
# ./configure
# make
# make check
# make install
检测是否安装成功:
# protoc --version
四、下载hadoop-2.2.0源码并编译
在/usr目录进行
用svn下载hadoop-2.2.0源码,命令:
$ svn checkout 'http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0'
源码下载完成后,在/usr目录下会有一个release-2.2.0目录,进入该目录:
$ cd /usr/release-2.2.0
$ ls –la
编译源码:
$ mvn package -Pdist,native -DskipTests –Dtar --不生成文档
$ mvn package -Pdist,native,docs,src -DskipTests –Dtar --生成文档,需要安装findbugs,并设置FINDBUGS_HOME环境变量
编译的时间比较久,编译过程中会联网下载所需要的包,机子没联网是不会成功编译的。
编译结束,最后打印的信息如下,每一项均是‘SUCCESS’,则编译成功:
编译好的代码包在/usr/release-2.2.0/hadoop-dist/target目录下:
$ cd /usr/release-2.2.0/hadoop-dist/target
$ ls –la
因为是在64位系统下编译的,所以编译出来的代码包是64位版本的;可以直接将/usr/release-2.2.0/hadoop-dist/target目录下的hadoop-2.2.0或者hadoop-2.2.0.tar.gz拷贝到其他linux64位平台进行搭建hadoop集群。
说明:
1、 机器得连网,如果没联网找可以联网的机器下载,但是编译时还是要下载一些东西,所以,实在不行。最好找相同平台(可以是虚拟机)能上网的机器做下面工作,弄好了再把编译好的代码包拷回来。
2、 命令操作中,‘#’开头的是在root用户进行,‘$’开头的是在普通用户下进行
3. 如何在eclipse中编辑hadoop2.2.0源代码
我的思路是使用maven的eclipse插件,生成eclipse支持的maven工程,然后导入到eclipse中。
1.下载eclipse的linux版本
eclipse最新版kepler的linux 64位 的下载地址是 http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/kepler/SR1/eclipse-jee-kepler-SR1-linux-gtk-x86_64.tar.gz&mirror_id=1082
然后在hadoop的源代码目录/usr/local/hadoop-2.2.0-src下,创建一个文件eclipseReload.sh,修改文件内容如下:
#!/bin/sh
mvn clean compile
mvn eclipse:clean
mvn eclipse:eclipse
保存退出。
对该文件执行以下命令
chmod u+x eclispseReload.sh
赋予执行权限,然后执行该文件。过一段时间,就会自动生成eclipse项目的结构。
2.导入eclipse
打开eclipse,选择import maven projects,点击Browse… 选择hadoop源码根目录,就可以导入各个项目,竟然后54个项目。
导入之后,eclipse会编译很长时间的,编译过后,出现一堆错误。我们可以关闭eclipse的maven插件,使用如下方法关闭。
等着把这些东西搞定后,然后看看只有hadoop-common编译不通过,看了一下代码是包org.apache.hadoop.ipc.protobuf下面缺少类,而在其他地方竟然使用了其中的类,既然是test部分的代码,我们可以根据eclipse提示自己创建一些类,编译通过。不要删除这些类,因为其他项目也引用了,删来删去很麻烦。
4. 如何编译Apache Hadoop2.2.0源代码
7.编译hadoop2.2源码
从hadoop官网下载2.2稳定版,
执行以下命令解压缩jdk
tar -zxvf hadoop-2.2.0-src.tar.gz
会生成一个文件夹 hadoop-2.2.0-src。源代码中有个bug,这里需要修改一下,编辑目录/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,执行以下命令
gedit pom.xml
在第55行下增加以下内容
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
保存退出即可。
5. 如何在eclipse中编辑hadoop2.2.0源代码
1.下载eclipse的linux版本
2.然后在hadoop的源代码目录/usr/local/hadoop-2.2.0-src下,创建一个文件eclipseReload.sh,修改文件内容如下:
#!/bin/sh
mvn clean compile
mvn eclipse:clean
mvn eclipse:eclipse
3.保存退出。
4.对该文件执行以下命令:
chmod u+x eclispseReload.sh
赋予执行权限,然后执行该文件。过一段时间,就会自动生成eclipse项目的结构。
5.导入eclipse:打开eclipse,选择import maven projects,出现如下图所示,点击Browse… 选择hadoop源码根目录,就可以导入各个项目,竟然后54个项目。
6.等着把这些东西搞定后,然后看看只有hadoop-common编译不通过,看了一下代码是包org.apache.hadoop.ipc.protobuf下面缺少类,而在其他地方竟然使用了其中的类,既然是test部分的代码,我们可以根据eclipse提示自己创建一些类,编译通过。不要删除这些类,因为其他项目也引用了,删来删去很麻烦。
6. 如何在eclipse中编辑hadoop2.2.0源代码
7.编译hadoop2.2源码
从hadoop官网下载2.2稳定版,
执行以下命令解压缩jdk
tar -zxvf hadoop-2.2.0-src.tar.gz
会生成一个文件夹 hadoop-2.2.0-src。源代码中有个bug,这里需要修改一下,编辑目录/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth中的文件pom.xml,执行以下命令
gedit pom.xml
在第55行下增加以下内容
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-util</artifactId>
<scope>test</scope>
</dependency>
保存退出即可。.
7. 如何编译Apache Hadoop2.4.0源代码
安装JDK
hadoop是java写的,编译hadoop必须安装jdk。
从oracle官网下载jdk,下载地址是http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html,选择 jdk-7u45-linux-x64.tar.gz下载。
执行以下命令解压缩jdk
tar -zxvfjdk-7u45-linux-x64.tar.gz
会生成一个文件夹jdk1.7.0_45,然后设置环境变量中。
执行命令 vi/etc/profile,增加以下内容到配置文件中,结果显示如下
export JAVA_HOME=/usr/java/jdk1.7.0_45
export JAVA_OPTS="-Xms1024m-Xmx1024m"
exportCLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
保存退出文件后,执行以下命令
source /etc/profile
java –version 看到显示的版本信息即正确。
安装maven
hadoop源码是使用maven组织管理的,必须下载maven。从maven官网下载,下载地址是http://maven.apache.org/download.cgi,选择 apache-maven-3.1.0-bin.tar.gz 下载,不要选择3.1下载。
执行以下命令解压缩jdk
tar -zxvf apache-maven-3.1.0-bin.tar.gz
会生成一个文件夹apache-maven-3.1.0,然后设置环境变量中。
执行命令vi /etc/profile,编辑结果如下所示
MAVEN_HOME=/usr/maven/apache-maven-3.1.0
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
保存退出文件后,执行以下命令
source /etc/profile
mvn -version
如果看到下面的显示信息,证明配置正确了。
8. 如何编译Apache Hadoop2.2.0源代码
hadoop是不需要编译的,解压就可以直接使用了,操作如下:
tar –zxvf hadoop-2.2.0.tar.gz #解压"hadoop-2.2.0.tar.gz"安装包
mv hadoop-2.2.0 /usr/local/hadoop #将"hadoop-2.2.0"移动到/usr/local目录下
chown –R hadoop:hadoop /usr/local/hadoop #将hadoop目录下的属性调整为hadoop
9. 为什么要编译apache hadoop2.2.0源代码
hadoop是不需要编译的,解压就可以直接使用了,操作如下: tar –zxvf hadoop-2.2.0.tar.gz #解压"hadoop-2.2.0.tar.gz"安装包mv hadoop-2.2.0 /usr/local/hadoop #将"hadoop-2.2.0"移动到/usr/local目录下chown –R hadoop:hadoop /usr/local/had...