作者:农大军乐团_697 | 2021-09-05 08:53
本文不是面向HDFS或MapReduce的配置使用,而是面向Hadoop本身的开发。进行开发的前提是配置好开发环境,即获取源代码并首先能够顺畅编译(build),本文即记录了在Linux(Ubuntu10.10)上配置eclipse编译Hadoop源代码的过程。开发Hadoop应该基于哪个版本的源代码呢?一种选择是通过同步跟踪最新源代码,另一种选择是选择某个较
本文不是面向 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,直接从 http://www.eclipse.org/downloads 下载最新版 Eclipse IDE for Java Developers,本地解压缩即可使用。
3. 安装 Subclipse(Eclipse 的 SVN 插件)
用于从 Hadoop 获得源代码。我们使用 eclipse 自带的软件安装功能,通过 Subclipse 提供的地址自动下载安装该插件。
- 首先访问http://subclipse.tigris.org,在Download and Install页面找到与Eclipse版本合适的Subclipse版本,最新为1.6,将其Eclipse update site URL(即http://subclipse.tigris.org/update_1.6.x)复制下来;
- 然后打开 eclipse 的菜单 Help > Install New Software,单击 Add 按钮,填入刚才复制的安装地址(即 http://subclipse.tigris.org/update_1.6.x),可将该地址取名为subclipse;www.linuxidc.com点击OK回到 Install 窗口,选择 Subclipse,而后按 Next 逐步安装。
- 此外,还需安装 SVN 所需的 JavaHL,执行如下命令行:
$ sudo apt-get install libsvn-java
4. 下载 Hadoop(MapReduce)源代码
首先,Hadoop 源代码共包括 common、hdfs(分布式文件系统)、mapred(MapReduce) 三部分,它们之间存在依赖关系:common 是后两者的公共组件,mapred 则是基于 hdfs. 但这些依赖关系已经处理好,无需开发者关心,三个项目可分别独立下载、编译。本文就以 MapReduce 为例。
源代码 SVN 的地址位于:http://svn.apache.org/repos/asf/hadoop。
可以从浏览器直接访问,其下目录结构可能会发生变化,但根据常识顾名思义即可找到需要的部分。目前以“common”目录(与上段所说 common组件含义不同)为主,内含我们通常所需的代码。进入common目录:
- 如果选择最新版本,可以直接定位到 trunck 目录,如 MapReduce 源代码地址为:http://svn.apache.org/repos/asf/hadoop/common/trunk/mapreduce
- 如果选择 release 版本,需进入 tags 目录浏览,找到所需的版本,如 0.21.0 版 MapReduce 源代码地址为:http://svn.apache.org/repos/asf/hadoop/common/tags/release-0.21.0/mapreduce
确定好 SVN 地址后,本地 eclipse 需要的操作如下:
- 在 eclipse 中,单击菜单 File > Import,选择 SVN > 从 SVN 检出项目,单击 Next 按钮进入下一步;
- 选中“创建新的资源库位置”,单击 Next 按钮后输入上述对应部分的地址,继续等待列出目录结构,选择根目录即可;
- 下一步选择“作为新项目检出,并使用新建项目向导进行配置”,www.linuxidc.com 不要选择“作为工作空间中的项目检出”,因为无法选择项目类型;点击 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.