Eclipse+hadoop2.6.2源码编译导入

1. 安装Apache Maven。

这方面的文章挺多,参考:http://blog.csdn.net/july_2/article/details/32102959

修改eclipse maven配置:windows->preference->maven->user setting,到自己maven安装目录下。我的:/home/zfh/apache/maven-3.3.9/conf/settings.xml


在settings.xml文件里可以配置maven下载的jar包在本地的存放目录:<localRepository>/home/zfh/apache/mavenRepository</localRepository>

可以设置maven的源配置,可以修改成国内的源:

 <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
      <mirror>   
            <id>Central</id>   
            <url>http://repo1.maven.org/maven2</url>   
            <mirrorOf>central</mirrorOf>   
        </mirror>
    <mirror>
        <id>nexus-osc</id>
        <mirrorOf>*</mirrorOf>
        <name>Nexus osc</name>
        <url>http://maven.oschina.net/content/groups/public/</url>
    </mirror>
  </mirrors>

2:安装protobuf,不然在执行maven install时会报:

checking for gcc... no
checking for cc... no
checking for cl.exe... n

安装命令:---yum install -y gcc-c++
安装完毕后,在环境变量配置protobuf的PATH

这块可参考:https://my.oschina.net/zhangjie830621/blog/412831

3: cd到 hadoop-2.6.0-src/hadoop-maven-plugins 目录下 使用:mvn intall

4.:cd到hadoop-2.6.0-src 目录下 使用mvn eclipse:eclipse -DskipTests

注意第四步可能会报错:可以执行mvn org.apache.maven.plugins:maven-eclipse-plugin:2.6:eclipse,选择eclipse插件,然后再执行第4步

5:经过漫长等待,成功后会显示BUILD SUCCESS。

6:在Eclipse中:File-Import-Existing Projects into Workspace 选择hadoop-2.6.0-src目录导入。

7:

导入后会有一些错误,主要是三个:

 

序号DescriptionResourcePathLocationType
(1)AvroRecord cannot be resolved to a typeTestAvroSerialization.java/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avroline 32Java Problem
(2)EchoRequestProto cannot be resolvedRPCCallBenchmark.java/hadoop-common/src/test/java/org/apache/hadoop/ipcline 397Java Problem
(3)Project 'hadoop-streaming' is missing required source folder: '<你的源代码根目录>/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf'hadoop-streaming Build pathBuild Path Problem

解决第一个错误:

  • 需要下载avro-tools-x.x.x.jar文件。
  • 进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\avro”执行命令,java -jar <所在目录>\avro-tools-1.7.7.jar compile schema avroRecord.avsc ..\java 。其中avsc文件是avro的模式文件,上面命令是要通过模式文件生成相应的.java文件。

         操作命令:cd /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/hadoop-common/src/test/avro

         java -jar /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/avro-tools-1.7.7.jar compile schema avroRecord.avsc ../java

  • 右键单击eclipse中的hadoop-common项目,然后refresh。【如果refresh不成功,直接refresh出错源码文件所在的包】


解决第二个错误,也是要生成一些.java文件:

  • 进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\proto”,执行protoc --java_out=..\java *.proto 命令(protoc就是在上面第三步下载的protoc程序)。

操作命令:cd /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/hadoop-common/src/test/proto

protoc --java_out=../java *.proto

  • 右键单击eclipse中的hadoop-common,然后refresh。【如果refresh不成功,直接refresh出错源码文件所在的包】

解决第三个错误:

  • 在eclipse中,右键单击hadoop-streaming项目,选择“Properties”,左侧栏选择Java Build Path,然后右边选择Source标签页,注意出错的那个路径(先不要删除)。
  • 点击“Link Source按钮”,选择被链接的目录为“<你的源代码根目录>/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf”,链接名可以使用显示的(也可以随便取);
  • inclusion patterns中添加capacity-scheduler.xml,exclusion patters中添加**/*.java,这个信息与出错的那项一样;完毕后将出错的项删除。刷新hadoop-streaming项目。

     【补充:好像直接将出错的Source标签页中的项删去,也可以】


至此可以成功导入Hadoop 2.6.0 的源代码到eclipse中,结果如下图所示:

这块参考:http://blog.csdn.net/oneinmore/article/details/44984419


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值