在调试hadoop的时候,你第一点需要明确需要调试哪个类,然后调试时的上下文参数大概是什么样的,在上一篇里我讲了如何设置hadoop的调试,这里分享一点小的调试技巧。
例如我需要知道调试的类和上下文参数,那其实在启动脚本里就有的,我们不妨在启动时将这些输出来看,例如在hadoop的
- exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
这一行上面增加如下的echo语句
- echo "opts=$HADOOP_OPTS" #一些额外设置的参数
- #echo "classpath=$CLASSPATH" #这个是所有的jar路径
- echo "class=$CLASS" #具体的调试类 看main函数
- echo "params=$@" #传递的参数
例如运行
- hadoop dfs -ls
将得到如下输出
- opts= -Dhadoop.log.dir=/home/dikar/Program/hadoop- 0.20 . 2 /bin/../logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/dikar/Program/hadoop- 0.20 . 2 /bin/.. -Dhadoop.id.str= -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/dikar/Program/hadoop- 0.20 . 2 /bin/../lib/native/Linux-i386- 32 -Dhadoop.policy.file=hadoop-policy.xml
- class =org.apache.hadoop.fs.FsShell
- params=-ls
则知道调试时是需要进入 FsShell这个类
更多信息请查看 java进阶网 http://www.javady.com