调试hadoop的小技巧
????????? 在调试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.xmlclass=org.apache.hadoop.fs.FsShellparams=-ls
?
?? 则知道调试时是需要进入? FsShell这个类