Hadoop-0.1.0代码调试运行

之前雄心勃勃的从GitHub上下了Hadoop源码,想要通读涨涨姿势,甚至想自己写一个简易版本。
不料代码啃起来味同嚼蜡,在读了基本的RPC之后,就此搁置。

作者:木鸟杂记 https://www.qtmuniao.com, 转载请注明出处

后来,抱着没有干不好的事,只有打开方式不对的心态,换个姿势,再学一次。
这次计划如下:

  1. 首先,将代码在本地调试。
  2. 然后,按模块进行debug。

今天主要说第一块的探索,花了两个晚上:>。

  • git fork下源码,git clone到本地,通过git tag --list 查看所有标签,找到0.1.0版本。
    并且checkout出来。
  • 配置JAVA_HOME,HADOOP_HOME, PATH环境变量。
  • 下载安装ant,并且配置环境变量(ANT_HOME,PATH)
  • Eclipse新建Java Project,然后选择Java Project From Existing Ant Buildfile,
    从现有文件夹中打开,选择hadoop所在文件夹,它会自动识别出build.xml,然后新建Ant工程。
  • 右击build.xml,run as-> ant built,选第二个,进行配置(选对运行文件夹以及build文件,如果
    不行就在含build.xml目录中执行命令ant,然后就会生成build文件夹,并且根据conf文件夹模板生成
    必要的conf文件。
  • 修改hadoop脚本(在**${HADOOP_HOME}/bin**里),为了不破坏原来文件,cp hadoop hadoop-debug
    然后在此脚本中,将最后一行运行命令,加上一些用于调试的参数。修改如下
    • 修改前
      1
      2
      # run it
      exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
    • 修改后
      1
      2
      3
      # run it
      exec "$JAVA" -Xdebug -Xrunjdwp:transport=dt_socket,address=9090,server=y,suspend=y
      $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
    • -Xdebug指明是调试,-Xrunjdwp引出后面参数。transport:通信方式,address:端口。
  • 然后选择一个模块运行,比如NameNode:bin/hadoop-debug namenode -format
  • 在Eclipse中选择Debug->Debug configurations->Remote Java Application,选择对工程,localhost
    以及对应端口就行。记得在代码中加断点,然后就可以愉快地运行了。

夜深啦,今天先到这里。


我是青藤木鸟,一个喜欢摄影、专注大规模数据系统的程序员,欢迎关注我的公众号:“木鸟杂记”,有更多的分布式系统、存储和数据库相关的文章,欢迎关注。 关注公众号后,回复“资料”可以获取我总结一份分布式数据库学习资料。 回复“优惠券”可以获取我的大规模数据系统付费专栏《系统日知录》的八折优惠券。

我们还有相关的分布式系统和数据库的群,可以添加我的微信号:qtmuniao,我拉你入群。加我时记得备注:“分布式系统群”。 另外,如果你不想加群,还有一个分布式系统和数据库的论坛(点这里),欢迎来玩耍。

wx-distributed-system-s.jpg