配置eclipse编译_开发Hadoop(MapReduce)源代码

配置 eclipse 编译、开发 Hadoop(MapReduce)源代码


本文不是面向 HDFS 或 MapReduce 的配置使用,而是面向 Hadoop 本身的开发。进行开发的前提是配置好开发环境,即获取源代码并首先能够顺畅编译(build),
本文即记录了在 Linux(Ubuntu 10.10)上配置 eclipse 编译 Hadoop 源代码的过程。


开发 Hadoop 应该基于哪个版本的源代码呢?一种选择是通过同步跟踪最新源代码,另一种选择是选择某个较新的稳定的 release 版本。如果是改进 Hadoop 本身,
通常选择前者(比如对 SVN 源有写权限的 Hadoop 核心开发人员);如果是基于 Hadoop 开发其他产品,则通常选择后者,且只需在 Hadoop 有新的稳定版本发布时
才更新产品使之兼容。不论何种情况,都应该从官方 SVN 同步源代码,不推荐下载 release 版本的打包文件,将其中源代码部分导入 eclipse,因为 release 版本
不是面向重新编译的,编译时会遇到一些问题。

1. 安装 Java 开发工具(JDK)

Eclipse、Hadoop都使用Java开发,所以我们首先需要JDK,执行如下命令行:

$ sudo apt-get install openjdk-6-jdk

2. 安装 Eclipse

推荐开发环境选用 eclipse,直接从 https://www.360docs.net/doc/b61210440.html,/downloads 下载最新版 Eclipse IDE for Java Developers,本地解压缩即可使用。

3. 安装 Subclipse(Eclipse 的 SVN 插件)

用于从 Hadoop 获得源代码。我们使用 eclipse 自带的软件安装功能,通过 Subclipse 提供的地址自动下载安装该插件。
?首先访问https://www.360docs.net/doc/b61210440.html,,在Download and Install页面找到与Eclipse版本合适的Subclipse版本,最新为1.6,将其Eclipse update site URL
(即https://www.360docs.net/doc/b61210440.html,/update_1.6.x)复制下来;
?然后打开 eclipse 的菜单 Help > Install New Software,单击 Add 按钮,填入刚才复制的安装地址(即 https://www.360docs.net/doc/b61210440.html,/update_1.6.x),
可将该地址取名为subclipse;点击OK回到 Install 窗口,选择 Subclipse,而后按 Next 逐步安装。
?此外,还需安装 SVN 所需的 JavaHL,执行如下命令行:
$ sudo apt-get install libsvn-java
【注意】
经过测试,上边的安装JavaHL的方法是无效的(原因不太清楚),当操作第4步 使用svn检出项目-视图新建一个svn库时,插件报错“unable to load default svn client”,
查看Window-Preferences-Team-svn,会发现svn本地接口显示为不可用。
可以通过以下方法解决(安装svn所需kit):
打开 eclipse 的菜单 Help > Install New Software,填入上边安装subclipse时所用的安装地址(即 https://www.360docs.net/doc/b61210440.html,/update_1.6.x),选择第三个subclipse svnkit option,
将其下的三个全选,然后像subclipse一样安装上。安装好之后,进入Window-Preferences-Team-svn,将svn本地接口选择上安装的那个

(下拉就可以看到)。

4. 下载 Hadoop(MapReduce)源代码

首先,Hadoop 源代码共包括 common、hdfs(分布式文件系统)、mapred(MapReduce) 三部分,它们之间存在依赖关系:common 是后两者的公共组件,mapred
则是基于 hdfs. 但这些依赖关系已经处理好,无需开发者关心,三个项目可分别独立下载、编译。本文就以 MapReduce 为例。


源代码 SVN 的地址位于:https://www.360docs.net/doc/b61210440.html,/repos/asf/hadoop。

可以从浏览器直接访问,其下目录结构可能会发生变化,但根据常识顾名思义即可找到需要的部分。目前以“common”目录(与上段所说 common组件含义不同)为主,
内含我们通常所需的代码。进入common目录:
?如果选择最新版本,可以直接定位到 trunck 目录,如 MapReduce 源代码地址为:https://www.360docs.net/doc/b61210440.html,/repos/asf/hadoop/common/trunk/hadoop-mapreduce-project/
?如果选择 release 版本,需进入 tags 目录浏览,找到所需的版本,如 0.21.0 版 MapReduce 源代码地址为:https://www.360docs.net/doc/b61210440.html,/repos/asf/hadoop/common/tags/release-0.21.0/mapreduce


确定好 SVN 地址后,本地 eclipse 需要的操作如下:

?在 eclipse 中,单击菜单 File > Import,选择 SVN > 从 SVN 检出项目,单击 Next 按钮进入下一步;
?选中“创建新的资源库位置”,单击 Next 按钮后输入上述对应部分的地址,继续等待列出目录结构,选择根目录即可;
?下一步选择“作为新项目检出,并使用新建项目向导进行配置”,不要选择“作为工作空间中的项目检出”,因为无法选择项目类型;点击 Finish 按钮进入 New Project 向导;
?选择项目类型为 Java Project,取好项目名称,JRE最好选1.6,点击 Next 按钮,进入 Java Setting 窗口;
?将 Default output folder 由 .../bin 更改为 .../build/eclipse-classes(或其他),以免 eclipse 自动清空 bin 文件夹下手工编写的文件;点击 Finish 按钮等待下载完成。

此时会有很多文件标有红色叉号,属正常现象,后面我们使用 ant 编译出配套的 eclipse 项目文件则可消除这些错误。

5. 设置使用 Ant Builder 进行编译

以 mapred 部分为例,设上步新建的项目为 MapReduce.
?右键单击该项目(或从 Project 菜单下)选择 Properties,找到 Builders 选项卡,取消勾选 Java Builder,单击 New 按钮选择 Ant Builder,进入 Edit Configuration 窗口;
?初始为 Main 选项卡,Name栏可设置名称 MapReduce_Builder(或其他),Buildfile栏通过 Browse Workspace 按钮选择 MapReduce 项目下的 build.xml 文件;
?而后切换到 Targets 选项卡,单击 Manual Build 栏的 Set Targets 按钮,除了默认选项 compile 外,勾选 compile-test-system 和 eclipse(自动生成eclipse项目文件);
如果查找不便可勾选下方

Sort targets(按名称字母序)和 Hide internal targets.

确认后项目即开始进行编译(时间较长),可以看到控制台(Console)有各种输出,期间会自动下载若干文件。

完成后右键单击项目,选择 Refresh(或按 F5 键),可以看到项目组织结构发生了变化,原有的红色叉号也消失了。



【注意】由于项目规模较大,在第一遍编译完成后,可在 Project 菜单下取消勾选 Build Automatically.


参考:https://www.360docs.net/doc/b61210440.html,/basicthinker/article/details/6174442

相关文档
最新文档