利用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.pluginsorg.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,可以断多台,应该是一样。

本文来源于"阿里中间件团队播客",原文发表时间"  2012-06-08"

通过eclipse调试MapReduce任务相关推荐

  1. 如何在eclipse调试mapreduce程序

    2019独角兽企业重金招聘Python工程师标准>>> 如何在eclipse或myeclipse调试mapreduce程序,这个可能是初学mr程序者碰到的一个难题 在hadoop1. ...

  2. 使用eclipse调试hive mapreduce

    我们知道Hive经过一些转换后,提交job到hadoop,一般我们只能debug到submitJob这里,而不知道后面那些mapper到底是怎样执行的.如果想要跟踪一下像SelectOperator是 ...

  3. Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo

    随笔 - 70  文章 - 0  评论 - 88 Linux上搭建Hadoop2.6.3集群以及WIN7通过Eclipse开发MapReduce的demo 近期为了分析国内航空旅游业常见安全漏洞,想到 ...

  4. Eclipse 调试器(引用IT168)

    Eclipse 调试器:零距离接触实战技巧 2011年11月25日01:29IT168 字号:T|T 调试的方法虽然千千万万,但归根结底,就是找到引发错误的代码.Eclipse调试器的目标是让程序员能 ...

  5. linux + ffmpeg + eclipse 调试

    使用linux + ffmpeg + eclipse调试步骤 OS : ubuntu 12.04 Eclipse : 3.7.2 为Eclipse安装cdt插件,使其支持c/c++ 导入ffmpeg项 ...

  6. eclipse调试详解

    eclipse调试详解 作者: 高州人家 来源: 网络转载 浏览: 1610 次 好评: 0分 [ 小 中 大 ] 2007-11-16 本地调试     Java   调试器具有客户机/服务器设计, ...

  7. ubuntu 环境下调试mysql源码_Linux中eclipse调试mysql源代码

    Linux中eclipse调试mysql源代码 系统:Redhat Linux 6.4 准备的包: eclipse-cpp-luna-SR1-linux-gtk-x86_64 .tar.gz cmak ...

  8. Hadoop+eclipse运行MapReduce程序

    前面,我们已经通过eclipse下安装Hadoop的插件配置好了基于Hadoop+eclipse的MapReduce开发环境.现在,我们在这个Hadoop+eclipse环境下运行MapReduce程 ...

  9. IDEA+Maven运行调试MapReduce程序

    IDEA+Maven运行调试MapReduce程序 文章目录 IDEA+Maven运行调试MapReduce程序 新建java类 配置输入文件路径 修改level参数 添加Application配置 ...

最新文章

  1. uniapp 页面渲染完成
  2. windows环境里React-Native运行失败的原因之一,缺少依赖
  3. Consecutive Sum LightOJ - 1269(区间异或和)
  4. centos7修改mysql数据存储,Centos7 修改mysql8数据文件存储路径方案
  5. Linux修改时区和时间
  6. c语言循环重新输入Y,大佬们帮帮忙 帮我改改 怎样能在输入Y后 再次进行for循环...
  7. Onlyoffice安装教程
  8. 人工神经网络的应用实例,人工神经网络简单例题
  9. 【架构师技能篇】Worker初识
  10. linux挂载安卓手机,安卓USB设备U盘挂载工具(StickMount Pro)
  11. Windows7无法自动安装FT232RL驱动解决方法
  12. wireguard官方swift代码编译错误的解决办法
  13. 台式电脑组装的步骤~~~~·
  14. 当try_files遇上gateway是如何产生火花的
  15. python玫瑰花数量的含义_玫瑰花的数量代表的意义
  16. 关河因果将逻辑规则与机器学习融合,将带来哪些技术突破?
  17. 【转】CAN总线设计---CAN节点的电容、CAN终端电阻、CAN总线共模电感/共模扼流圈修改版*****
  18. 密钥(yao)(yue)
  19. 硬件追捕 v1.3 官网
  20. 软考网络工程师看图题题目(含答案)

热门文章

  1. .net程序员转战android第三篇---登录模块之静态登录
  2. NSDate获取当前时区的时间
  3. 跨浏览器开发经验总结(三)
  4. 深度剖析数据在内存中的存储1——数据类型
  5. 7-Python3从入门到实战—基础之数据类型(字典-Dictionary)
  6. Android中的ViewDragHelper
  7. Node.js制作图片下载爬虫的一般步骤
  8. 创建 Web 前端开发环境(node和npm)
  9. C/S架构程序多种类服务器之间实现单点登录(转)
  10. Android开发3g、wap、net的区别