问题导读:
1.如何通过maven导入eclipse工程?
2.创建hadoop工程有几种方式?
3.hadoop-maven-plugins插件的作用是什么?
搭建Hadoop源代码阅读环境
1 创建Hadoop工程(1)
本节将介绍如何创建一个Hadoop源代码工程以方便阅读源代码。总体上说,目前存在两种Hadoop源代码阅读环境搭建方法,分别是构建Maven工程和构建Java工程。两种方法各有利弊:前者可通过网络自动下载依赖的第三方库,但源代码会被分散到多个工程中进而带来阅读上的不便;后者可将所有源代码组织在一个工程中,但需要自己添加依赖的第三方库,大家可根据自己的喜好选择一种方法。本节将依次介绍这两种方法。
注释:此处需要对maven有所了解,可参考:
实际操作:
eclipse maven plugin 插件 安装 和 配置
理论知识:
maven入门教程介绍
Maven2使用项目开发规范说明
视频讲解
源码编译maven系列视频教程汇总
(1)构建Maven工程
通过Maven工程搭建Hadoop源代码阅读环境的步骤如下:
步骤1 解压缩Hadoop源代码。
将下载到的Hadoop源代码压缩包解压到工作目录下,下载地址:hadoop-2.4.0-src.tar。
解压后如下:
步骤2 导入Maven工程。
在Eclipse中,依次选择“File”→“Import”→“Maven”→“Existing Maven Project”,在弹出的对话框中的“Root Directory”后面,选择Java源代码所在的目录。
单击“Next”按钮,在弹出的对话框中选择“Resolve All Later”,并单击“Finish”按钮完成Maven项目导入。之后,Eclipse会自动通过网络从Maven库中下载依赖的第三方库(JAR包等)。注意,你所使用的电脑必须能够联网。
将Hadoop 2.0源代码导入Maven项目后,会生成50个左右的工程,这些都是通过Maven构建出来的,每个工程是一个代码模块,且彼此相对独立,可以单独编译。你可以在某个工程下的“src/main/java”目录下查看对应的源代码。
(2)构建Java工程 通过Java工程搭建Hadoop源代码阅读环境的步骤如下: 步骤1 解压缩Hadoop源代码。 同“构建Maven工程”中的步骤1类似。 步骤2 新建Java工程。 打开Eclipse,进入Eclipse可视化界面后,如图1-1所示,依次单击“File”→“New”→ “Java Project”,并在弹出的对话框中去掉“Use default location”前的勾号,然后选择Hadoop安装目录的位置,默认情况下,工程名称与Hadoop安装目录名称相同,用户可自行修改。单击“完成”按钮,Hadoop源代码工程创建完毕。
回到Eclipse主界面后,打开新建的Hadoop工程,可看到整个工程按图1-2所示组织代码:按目录组织源代码,且每个目录下以JAR包为单位显示各个Java文件。
除了使用源代码压缩包导入Eclipse工程的方法外,读者可也尝试直接从Hadoop SVN上导入Hadoop源代码。
需要注意的是,通过以上方法导入Hadoop 2.0源代码后,很多类或者方法找不到对应的JAR包,为了解决这个问题,你需要将第三方JAR包导入工程中,如图1-3所示,方法如下:解压存放JAR包的压缩包,然后右击Project名称,在弹出的快捷菜单中选择“Properties”命令,将会弹出一个界面,然后在该界面中依次选择“Java Build Path”→ “Libraries”→“Add External JARs...”,将解压目录中share/hadoop目录下各个子目录中lib文件夹下的JAR包导入工程。
前面提到CDH版本将源代码和JAR包放到了一起,因此,如果使用CDH版本,则直接按照上述方法将源代码导入Eclipse工程即可。
细心的读者在阅读源代码过程中仍会发现部分类或者函数无法找到,这是因为Hadoop 2.0使用了Protocol Buffers定义了RPC协议,而这些Protocol Buffers文件在Maven编译源代码时才会生成对应的Java类,因此若其他类在源代码中引用这些类则暂时无法找到,解决方法是先编译Hadoop 2.0源代码再倒入Eclipse工程。
创建Hadoop工程(2) 首先,使用以下命令安装Elicpse插件hadoop-maven-plugins:
- $ cd ${HADOOP_HOME}/hadoop-maven-plugins
- $ mvn install
复制代码
然后生成Eclipse工程文件:
- $ cd ${HADOOP_HOME}
- $ mvn eclipse:eclipse -DskipTests
复制代码
最后在Eclipse中按照以下流程导入源代码:“File” → “Import”→ “Existing Projects into Workspace”。
|