如何在eclipse上调试hadoop的笔记

 

配置debug

1
进入hadoop/bin下面的hadoop-debug
……
elif [ "$COMMAND" = "tasktracker" ] ; then
CLASS=org.apache.hadoop.mapred.TaskTracker
HADOOP_OPTS="$HADOOP_OPTS $HADOOP_TASKTRACKER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address= 9005"
……

进入mapred-site.xml
<property>
<name>mapred.map.child.java.opts</name>
<value>-Xmx2000m -agentlib:jdwp=transport=dt_socket,address= 9010,server=y,suspend=y</value>
</property>

启动hadoop-debug

eclipse,进入run as debug 的配置
如何在eclipse上调试hadoop的笔记_第1张图片

我的mapreduce项目注意:

*新建mapreduce工程,替换hadoop-core.jar
*设置mapreduce端口
*新建参数路径,设置输入参数

步奏

修改mapred-site.xml文件,添加如下配置:

Xml代码

<property>  

  <name>mapred.child.java.opts</name>  

  <value>-agentlib:jdwp=transport=dt_socket,address=8883,server=y,suspend=y</value>  

</property>  

关闭所有的tasktracker,只保留上面配置的一台需要调试的tasktracker

启动Mapreduce job

右键hadoop src项目,右键“Debug As”,选择“Debug Configurations”,选择“Remote Java Application”,添加一个新的测试,输入远程host ip和监听端口,上例为8883,然后点击“Debug”按钮。此时应该连接到远程tasktracker child进程,并进入断点位置,可以单步调试了。

Eclipse 连接套接字模式下的 VM 调用示例

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address="8000" -jar test.jar 

使用远程启动配置启动 Eclipse,并指定远程应用程序的目标 VM 地址。为此,单击 Run > Debug Configurations,然后在 Eclipse 菜单中双击 Remote Java Application。从最新创建的启动配置中为目标应用程序指定 IP 和端口。为了在同一台机器上运行远程应用程序,仅需将主机 IP 指定为 localhost 或 127.0.0.1

问题1windows hadoop HDFS Failed to set permissions of path

答:

把 项目引用的 hadoop-core-1.0.2.jar  换成 hadoop-core-0.20.2.jar,了事。

或者下载修改的jar

https://skydrive.live.com/?cid=cf7746837803bc50&id=CF7746837803BC50%211276&authkey=!AJCcrNRX9RCF6FA

自己把hadoop源代码中的org.apache.hadoop.fs.FileUtil放到项目中去,自己修改FileUtil.checkReturnValue,使得在WIndows下不报出这个异常。

或者干脆自己重新编译hadoopjar

问题2hadoop:Input path does not exist异常

答:

http://blog.csdn.net/longzaitianguo/article/details/6773468

是因为本地的input目录并没有上传到HDFS上,所出现 org.apache.hadoop.mapred.InvalidInputException: 

Input path does not exist: hdfs://localhost:9000/user/root/input

解决方法,在eclipse下面建输入目录,配置到程序输入参数中即可。

如何在eclipse上调试hadoop的笔记_第2张图片

你可能感兴趣的:(如何在eclipse上调试hadoop的笔记)