Hama是最近Apache开源项目中比较活跃的项目,目前刚刚成为Apache Top Level Project。本文主要讲述Hama开发和调试流程。
本文用到的Hama是0.5.0版、Maven是3.0.4版、Eclipse是Eclipse Eclipse Java EE Indigo 3.7.2、OS是Fedora 3.4.4-3.fc17.x86_64。
准备工作
Hama是Apache开源项目,可以通过svn或git获取开发中的源码。Hama项目组使用JIRA进行项目管理和协作、Maven进行源码级的项目管理和构建、Jenkins作为持续集成构建。 Hama的编程语言是java,IDE一般使用Eclipse。
Hama Source Code
Latest Source Code
# subversion https://svn.apache.org/repos/asf/hama/trunk # git git://git.apache.org/hama.git |
Latest Released Source Code
Download Source Code
我们这里通过SVN获取Hama最新源开发中代码,直接把代码放在Eclipse的Workspace下,如:/home/micle/workpace
$ pwd /home/micle/workspace ### check out $ svn checkout https://svn.apache.org/repos/asf/hama/trunk hama-trunk # or $ svn co https://svn.apache.org/repos/asf/hama/trunk hama-trunk ### update $ svn update https://svn.apache.org/repos/asf/hama/trunk hama-trunk |
Maven
Hama项目组使用 Maven对Hama进行管理和构建。Apache Maven的角色类似于make和ant,是个项目构建和管理工具,但它更强大、更易于使用。
下载Maven: http://maven.apache.org/download.html,文章发表时Maven最新版是3.0.4,下载apache-maven-3.0.4-bin.tar.gz。
$ sudo tar zxvf apache-maven-3.0.4-bin.tar.gz -C /usr/local/public/develop/eclipse/ # Maven环境变量,并添加到PATH中 # /etc/profile Maven='/usr/local/public/develop/eclipse/apache-maven-3.0.4/bin' export PATH=$PATH:$Maven |
Eclipse
下载Eclipse IDE for Java Developers即可。
Hama Development
Eclipse工程
configure-workspace
$ mvn -Declipse.workspace="/home/micle/workspace/" eclipse:configure-workspace |
请将/home/micle/workspace/替换成你自己的Eclipse工作区。
使用mvn时,需要联网,用于下载相应的Plugin。
检查M2_REPO变量是否已经添加到build的classpath中,如果有则说明成功:
Select Window > Preferences Select Java > Build Path > Classpath Variables |
Maven构建
Maven构建包括Hama所有组件的构建和测试,目的在于确保当前源码工作正常,以便于在此基础上进行开发。
$ mvn install # mvn install failed, such as # [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.6: # test (default-test) on project hama-core: # There are test failures. # 原因:可能是Maven与maven-surefire-plugin的版本不匹配造成的,可以尝试修改POM.xml中maven-surefire-plugin版本。 # 解决:Maven 3.0.4在maven-surefire-plugin版本2.6时会报上面的错,而2.7则测试正常。 # 或者可以跳过测试: # $ mvn clean install package -DskipTests |
当然也可以与官方的测试报告和构建输出进行对比:
- Hama官方的测试报告:https://builds.apache.org/job/Hama-Nightly/lastCompletedBuild/testReport
- Hama官方的构建输出:https://builds.apache.org/job/Hama-Nightly/lastCompletedBuild/consoleText
生成Eclipse工程文件
$ mvn eclipse:eclipse |
如果一切正常,会在Hama的每个部分,如core,生成Eclipse工程文件,包括: .classpath, .project, .setting
现在可以在Eclipse中导入Hama工程了:
File -> Import -> Existing Projects into Workspace -> Choose your workspace as the root directory and import the hama-* projects. |
Hama Debug
使用Local 模式
一般使用Local模式对Hama进行调试。Hama默认模式即是Local模式,当然也可以在程序中设置conf变量,conf.set(“bsp.master.address”, “local”)。
使用Hama Log
Hama使用日志库Apache log4j的LOG来记录输出信息。LOG按等级从低到高OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,Hama默认的LOG等级是INFO,也就是说只有FATAL、ERROR、WARN、INFO才会输出,因此调试时,使用INFO这一级的日志输出。Apache log4j的配置文件是$HAMA_HOME/conf/log4j.properties。
LOG.info("INFO: This is a test!"); |
开始调试
下面以修改core/src/main/java/org/apache/hama/bsp/BSPJobClient.java为例,我们在606行添加了一个LOG:
602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 | |
完成修改后,添加测试用例,这里使用:core/src/test/java/org/apache/hama/bsp/TestLocalRunner.java,然后使用Eclipse的Debugger进行调试:
Run --> Debug As --> JUnit Test |
即可马上看到调试结果了。
Hama重新构建
在对Hama作了修改之后,如果需要发布对应的jar包,则需要重新构建已修改的那个component,这里重新构建core:
$ cd core # ignore tests $ mvn package -DskipTests |
重新构建好的jar包在core/target目录中。
参考
[1] Hama Developers Guide: http://hama.apache.org/developers.html
[2] Hama HowToContribute: http://wiki.apache.org/hama/HowToContribute
[3] Hama集群配置与测试: http://www.oriovo.com/cloud/hama-cluster.html


3万+

被折叠的 条评论
为什么被折叠?



