CentOS6.4编译Hadoop2.2.0

本文介绍了如何在CentOS6.4操作系统上编译Hadoop2.2.0。主要步骤包括执行'./configure','make'以及'make check'来完成构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.安装jdk
不要小看这一步,起先装了个jdk1.8.0,出现如下错误。
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on project hadoop-maven-plugins: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /usr/local/hadoop-2.2.0-src/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java:47: error: unknown tag: String
想是jdk1.8.0修改了doc的某些内容

在/etc/profile中设置环境变量,添加
#set java environment
export JAVA_HOME=/usr/local/jdk1.7.0
export JRE_HOME=/usr/local/jdk1.7.0/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar/:$JAVA_HOME/jre/lib:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin

2.安装maven3.2.1
不需要特别安装,下载下来看只要把bin加入到环境变量PATH中,同样是修改/etc/profile文件
# set mvn environment
export PATH=$PATH:/usr/local/apache-maven-3.2.1/bin
export MAVEN_HOME=/usr/local/apache-maven-3.2.1
执行mav -version查看安装是否成功

3.安装ant1.9.3
不需要特别安装,下载下来看只要把bin加入到环境变量PATH中,同样是修改/etc/profile文件
# set ant environment
export PATH=$PATH:/usr/local/apache-ant-1.9.3/bin
执行ant -version查看安装是否成功

4.安装cmake2.8.12.2

5.安装findbugs2.0.2
这个要ant安装,只要在findbugs2.0.2的源代码路径下执行
ant
就可以了

6.安装forrest 0.9
要把bin加入到环境变量PATH中,同样是修改/etc/profile文件
# set forrest environment
export PATH=$PATH:/usr/local/apache-forrest-0.9/bin
export FORREST_HOME=$FORREST_HOEM:/usr/local/apache-forrest-0.9

7.安装zlib-devel(可能默认已经安装好了)
 yum install zlib-devel 

8.安装protobuf 2.5.0

./configure

make

make check

make install

9.修改2.2.0的一个bug
实际上就是在hadoop-common-project/hadoop-auth/pom.xml中添加了几行代码
在<dependencies></dependencies>之间添加
   </dependency>
     <dependency>
       <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty-util</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
       <artifactId>jetty</artifactId>
       <scope>test</scope>
     </dependency>

10.还有的修改了maven的配置conf/settings.xml,我照此做了,但是感觉这个并不影响
一是在<mirror> </mirrors>之间添加
 <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.7</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>


以上这些过程我都照做了,但我不确定是否都是必须的,有些如果不安装,编译时会出现错误。

11.进入hadoop-2.2.0-src目录开始编译,输入命令
 mvn clean package -Pdist,native -DskipTests -Dtar 
我是使用root来编译的,之前在某个博客上说不能使用root编译,但是实践中发现会有permission denied的错误,我不确定错误发生的原因,但我是root的编译的。

以下是所碰到的错误:
 1. 2.2.0的源码有个bug,需要patch一下
下载patch文件,放到hadoop-src的根目录下,在此目录下执行
patch -p0 > HADOOP-10110.patch

不patch会碰到如下错误

实际上这个patch就是在/hadoop-src/hadoop-common-project/hadoop-auth/pom.xml中添加了如下代码:
<dependency>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-util</artifactId>
      <scope>test</scope>
    </dependency>
但是注意这段代码要在标签<dependencies></dependencies>之间,否则会报错。

2.如果不安装protoc,报如下错误
    [ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.2.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1] 
    [ERROR]  
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
    [ERROR] Re-run Maven using the -X switch to enable full debug logging. 
    [ERROR]  
    [ERROR] For more information about the errors and possible solutions, please read the following articles: 
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException 
    [ERROR]  
    [ERROR] After correcting the problems, you can resume the build with the command 
    [ERROR]   mvn <goals> -rf :hadoop-common 

3.此错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (create-testdirs) on project hadoop-project: Error executing ant tasks: /usr/local/hadoop-2.2.0-src/hadoop-project/target/antrun/build-main.xml (Permission denied) -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
分析:
最后有个Permission denied,难道是要 root编译才行?

4. terminal会打印出编译的进度,成功是SUCCEED,失败就FAILURE,之后的全SKIPPED,可以由此定位出自己哪一步失败了。

5.此错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on project hadoop-maven-plugins: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /usr/local/hadoop-2.2.0-src/hadoop-maven-plugins/src/main/java/org/apache/hadoop/maven/plugin/util/Exec.java:47: error: unknown tag: String
分析:
看样子是没有识别出String,难道是Java的包没加入? 
实际上是Java版本的问题,不能用1.8。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值