本文不是面向 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,直接从 下载最新版 Eclipse IDE for Java Developers,本地解压缩即可使用。
3. 安装 Subclipse(Eclipse 的 SVN 插件)用于从 Hadoop 获得源代码。我们使用 eclipse 自带的软件安装功能,通过 Subclipse 提供的地址自动下载安装该插件。
首先访问,在Download and Install页面找到与Eclipse版本合适的Subclipse版本,最新为1.6,将其Eclipse update site URL(即)复制下来; 然后打开 eclipse 的菜单 Help > Install New Software,单击 Add 按钮,填入刚才复制的安装地址(即 ),可将该地址取名为subclipse;点击OK回到 Install 窗口,选择 Subclipse,而后按 Next 逐步安装。 此外,还需安装 SVN 所需的 JavaHL,执行如下命令行:$ sudo apt-get install libsvn-java 4. 下载 Hadoop(MapReduce)源代码
首先,Hadoop 源代码共包括 common、hdfs(分布式文件系统)、mapred(MapReduce) 三部分,它们之间存在依赖关系:common 是后两者的公共组件,mapred 则是基于 hdfs. 但这些依赖关系已经处理好,无需开发者关心,三个项目可分别独立下载、编译。本文就以 MapReduce 为例。
可以从浏览器直接访问,其下目录结构可能会发生变化,但根据常识顾名思义即可找到需要的部分。目前以“common”目录(与上段所说 common组件含义不同)为主,内含我们通常所需的代码。进入common目录:
如果选择最新版本,可以直接定位到 trunck 目录,如 MapReduce 源代码地址为: 如果选择 release 版本,需进入 tags 目录浏览,找到所需的版本,如 0.21.0 版 MapReduce 源代码地址为:确定好 SVN 地址后,本地 eclipse 需要的操作如下:
此时会有很多文件标有红色叉号,属正常现象,后面我们使用 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 键),可以看到项目组织结构发生了变化,原有的红色叉号也消失了。