通过eclipse调试MapReduce任务

标签: 未分类 | 发表时间:2012-06-08 09:16 | 作者:dafu
出处:http://rdc.taobao.com/team/jm

利用MapReduce利器作开发,不论从思想上还是技能上都是新的体验。以下罗列下如何利用eclipse调试MR任务。

(本人环境: hadoop 1.0.2,部署在linux上,本地windows开发)

1、安装hadoop。

先在linux上安装好hadoop,为更接近线上环进,我的是 安装成Cluster

注意要远程访问相关端口,conf/mapred-site.xml中localhost:9001中需要换成ip加端口。

sh bin/start-all.sh启动,先按文档命令行跑一下example的wordcount。

我安装好运行example遇到了XML解析的错(原因应该是${java.home}/lib/jaxp.properties没有设置,见:javax.xml.xpath.XPathFactory.newInstance(uri)的注释),后来手动加了xalan-j_2.7.0.jar、xercesImpl-2.7.1.jar、xml-apis-2.7.1.jar、xmlenc-0.52.jar、serializer-2.7.1.jar几个包解决。

2、下载 hadoop eclipse plugin (最新只有0.20.3,不过也能使用),将jar放到eclipse/plugins下,启动eclipse

这个插件比较简陋,只有一个设置项:Window->Preferences->Hadoop Map/Reduce,设置Hadoop的安装路径,解压一份跟运行hadoop同版本的到本机并指向就行了(我的使用smb映射)

建ecplise工程,把WordCount的示例代码复制一份吧,有些hadoop相关的jar需要引用。

Run As->Run On Hadoop设置Map/Reduce Master的IP,端口为9000, DFS Master端口为9001

这样,不出意外的话就能在eclipse里运行Map/Reduce程序了。

3、打开debug。

因为Map/Reduce程序会被打成一个jar并拷到TaskTracker机器上(单独的进程)并开一个Child进程来跑JVM的,配置加到bin/下的脚本都是针对hadoop本身的进程,正确的配置如下:

在conf/mapred-site.xml中添加以下配置项:

        <property>
                <name>mapred.child.java.opts</name>
                <!–<value>-Xmx200m -Xdebug -Xrunjdwp:transport=dt_socket,address=7788,server=y,suspend=y</value>–>
                <value>-Xmx200m</value>
        </property>

        <property>
                <name>mapred.tasktracker.map.tasks.maximum</name>
                <value>1</value>
                <description>tasktracker的map任务上限</description>
        </property>

        <property>
                <name>mapred.tasktracker.reduce.tasks.maximum</name>
                <value>1</value>
                <description>tasktracker的reduce任务上限</description>
        </property>

        <property>
                <name>mapred.task.timeout</name>
                <value>100000000</value>
        </property>

其中的mapred.child.java.opts会在启动Child进程时设为启动参数。suspend=y取y/n分别表示是否挂起进程等待debug连进来。当然,这个选项还可以方便加其它JVM参数。

重启hadoop,这样运行示例,便可以看到7788端口被监听了。以下几条命令可能会用到:

./bin/stop-all.sh
sleep 1s
./bin/start-all.sh
sleep 1s
./bin/hadoop dfsadmin -safemode leave
#杀掉hadoop进程或某些异常情况下hadoop会安全模式中不退出,HDFS的文件是不能被修改的(运行示例会无任何输出,但从日志中可以看到异常)这个命令强制退出。
./bin/hadoop dfs -rmr /user/dafu/out.txt
echo done

 

以上只在linux的命令行运行有效。eclipse插件其实是自己作为JobClient在运行,从eclipse中运行时会自己生成一个hadoop-site.xml文件(新版hadoop拆分为3个了,不过不影响执行),而且,在插件GUI设置界面,居然找不到mapred.child.java.opts等配置项,手工打开:workspace/.metadata\.plugins\org.apache.hadoop.eclipse,可以看到这里存放了插件帮我们打好的jar,在hadoop-conf-132297972833171678里可以找到执行的配置。打开目发locations里边的xml文件(hadoop-site.xml的模板文件),搜索mapred.child.java.opts并修改为前面设置的值。

接下来先 Run As->Run On Hadoop,再用eclipse远程连7788端口进行debug即可。

注:多个TaskTracker,可以断多台,应该是一样。

相关 [eclipse 调试 mapreduce] 推荐:

通过eclipse调试MapReduce任务

- - 淘宝网通用产品团队博客
利用MapReduce利器作开发,不论从思想上还是技能上都是新的体验. 以下罗列下如何利用eclipse调试MR任务. (本人环境: hadoop 1.0.2,部署在linux上,本地windows开发). 先在linux上安装好hadoop,为更接近线上环进,我的是 安装成Cluster.

[原]Eclipse远程调试Spark

- - Soul Joy's Home
修改${spark_home}/bin/spark-class文件:. -Xdebug 启用调试特性. -Xrunjdwp 启用JDWP实现,包含若干子选项:. transport=dt_socket JPDA front-end和back-end之间的传输方法. dt_socket表示使用套接字传输.

Eclipse远程调试Web应用

- - ITeye博客
   在windows系统下 .    修改%CATALINE_HOME%/bin/catalina.bat,加入下面这行: .    其中address=8787是没被使用的端口号. 连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试.     在非windows系统中: .

Eclipse调试多线程代码

- - CSDN博客编程语言推荐文章
相信到现在为止,不管是什么编程语言,程序员都使用了IDE,IDE简化了程序员的开发过程. IDE能够管理项目,自动生成代码,自动生成文档,以及调试应用程序. 默认情况下,在调试多线程程序时,当遇到断点时(breakpoint),当前线程暂停,而其它线程继续运行,这是我们不想要看到的. 除第21个线程以外,其余都是Running状态.

Hadoop学习笔记之在Eclipse中远程调试Hadoop

- - BlogJava-首页技术区
话说Hadoop 1.0.2/src/contrib/eclipse-plugin只有插件的源代码,这里给出一个我打包好的对应的Eclipse插件:. 下载后扔到eclipse/dropins目录下即可,当然eclipse/plugins也是可以的,前者更为轻便,推荐;重启Eclipse,即可在透视图(Perspective)中看到Map/Reduce.

eclipse远程调试tomcat运行的web项目--配置

- - ITeye博客
eclipse远程调试tomcat运行的web项目. 从"远程"可以看出, tomcat运行的web项目不在本机,而且正在跑;. 比如用户说,系统出问题了, 打电话叫你解决一下. A:查看日志:这时一大堆日志, 你不愿意查找, 这时远程调试就可以清楚哪里出错了. B:远程调试:你可以知道传入对象的每个一个属性以及调用的方法等等更为详细的信息.

Eclipse for php + Xdebug搭建PHP的调试环境

- - CSDN博客Web前端推荐文章
Eclipse for php + Xdebug搭建PHP的调试环境.     第一步:到Eclipse的官网去下载PHP-Eclipse: http://www.eclipse.org/downloads/packages/eclipse-php-developers/heliossr1. 第二步:下载Xdebug (下载地址位于: http://xdebug.org/download.php,我的PHP版本为 PHP 5.3.28 Thread Safety, Apach为2.2.25,使用的端口号8080),我下载的Xdebug版本为php_xdebug-2.2.3-5.3-vc9.dll,并且放入到"PHP/ext目录中.

xampp结合chrome和eclipse调试php的配置步骤

- - CSDN博客推荐文章
1.安装xampp后,打开php.ini文件,取消最后面的[XDebug]的注释,特别注意 一定要打开元调试功能:xdebug.remote_enable = 1,重启xampp的apache服务. 2.安装chrone浏览器的php调试插件:xdebug heler. 3.在eclipse-php-helios-SR2-win32 的首选项 中设置 php excutables,指向xampp中的php安装路径,且选择xdebug作为调试器.

eclipse调试java程序的九个技巧

- - 研发管理 - ITeye博客
  最早开始用eclipse的debug的时候,只会F5 F6 F7 F8,甚至F7都不是很搞的明白是怎么用的,那时候资浅,碰不到需要复杂debug的代码,慢慢工作深入了,场景碰多了,就需要各种debug技巧来提升定位bug效率,以前找人帮忙排查问题,看他开各种窗口debug各种溜甚是羡慕嫉妒恨,慢慢久病成医自己也用溜了eclipse的一些主要的debug技巧.