Hadoop分布式程序的调试方法

C++沉思录+C专家编程+C和指针
39.0元

了解一个系统的内部,我觉得最好的办法只有两个:

1. 找系统的开发设计者仔仔细细的问,

2. 自己跟踪调试系统。

估计要找到 cutting 详细聊不太可能,那只有第二个办法可以采用了,呵呵。而且当 hadoop 出现一些莫名问题的时候,跟踪调试程序也是最后的无奈选择。

工欲善其事,必先利其器。我选择的工具和环境配置如下:

1. 开发机 OS linux (X 选择 gnome 或者 kde 都可以 )

2. 远程控制软件 tightvnc 客户端和服务器端

3. 开发调试 IDE 工具 Eclipse vim

其实要调试 hadoop 分布式程序和进行 java 远程调试是一样的,为什么呢?因为他们就是一回事儿,哈哈!

1.        启动 Eclipse ,将 hadoop 程序装载到工程里面

2.        修改 bin/hadoop 代码加入 java 远程调试选项:

  HADOOP_OPTS="$HADOOP_OPTS $HADOOP_TASKTRACKER_OPTS

  -agentlib:jdwp=transport=dt_socket,address=xxxx,server=y,suspend=y"

假设我们要调试 jobtracker 的代码,我们将 bin/hadoop 代码修改如下 :

elif [ "$COMMAND" = "tasktracker" ] ; then

  CLASS=org.apache.hadoop.mapred.TaskTracker

    HADOOP_OPTS="$HADOOP_OPTS $HADOOP_TASKTRACKER_OPTS -agentlib:jdwp=transport=dt_socket, address=8083, server=y, suspend=y"

3.        启动 hadoop

4.        Eclipse 里面跟踪调试

a)          Debug configuration 里面新建一个 Java Remote Application

b)         设置断点

c)         启动分布式任务

d)         这个时候任务就会你设置的断点处,停下来让你进行接下来的调试跟踪

你可能感兴趣的:(java,eclipse,hadoop,socket,server,command)