写过程序分布式代码的人都知道,分布式的程序是比较难以调试的,但是也不是不可以调试,对于Hadoop分布式集群来说,在其上面运行的是mapreduce程序,因此,有时候写好了mapreduce程序之后,执行结果发现跟自己想要的结果不一样,但是有没有报错,此时就很难发现问题,查找问题的方法之一就是对程序进行调试,跟踪代码的执行,找出问题的所在。那么对于Hadoop的Mapreduce是如何进行调试的呢?

  毫无疑问当然是借助eclipse这个强大的工具。具体方式如下:

  说明:由于公司服务器上部署的是Cloudera CDH5.4.4,在网上找了很多资料,没有发现CDH5.4.4相关的eclipse插件,这可难倒我了。网上搜索很多人有跟我一样的困境。但是在Apache Hadoop版本下就是不存在这样的问题,对于这个问题,我暂时的解决方案是在本地搭建一个伪分布式的Apache Hadoop的集群。这个伪分布式集群就是用来给我的调试程序使用。当我们当程序调试好了,再直接导入到CDH版本的工程中即可。

  1、搭建Apache Hadoop的伪分布式集群,这个问题请参考如下:

    http://www.cnblogs.com/ljy2013/articles/4295341.html

  2、在Apache Hadoop的版本中如何编译插件?这个问题请参考如下:

    http://www.cnblogs.com/ljy2013/articles/4417933.html

  3、通过步骤2,我们已经可以创建Mapreduce程序了,下面实战一下。

    (1)打开eclipse集成开发环境的工具

    (2)安装步骤2方式,添加hadoop的安装目录。并添加Mapreduce的tools。

    (3)编辑MapReduce tools,输入本地部署的伪分布式的集群的主机名和端口。如下图所示:

      

    (4)此时eclipse中会出现DFS Location这样一个标识,这个表示的是Hdfs,他能加载你伪分布式集群上的hdfs的所有目录,你在这个上面操作就相当于在hdfs上面操作,前提是你拥有相应的权限。如下图所示:(你可以在这个上面很方便的删除测试文件)

      

    (5)编写Map/Reduce程序。在这里我们就用WordCount这个例子来调试一下。

      编写好了WordCount后,单击调试,进入调试界面。如下图所示:

      

    (6)当你一直采用上面的方式调试后,中间会让你选择添加源文件的目录,你添加一下就好了,然后姐可以进入我们的Map类中。如下图所示:

      

    此时,你就可以观察和跟踪在map类中的map方法的执行是否正确。找出问题的根源。

     (7)同样,当你在map中执行完后,接着就会进入reduce类中,这中间会敬礼一个shuffle过程。这个过程是理解MapReduce的关键所在,请参考:

            http://www.cnblogs.com/ljy2013/articles/4435657.html

        当你进入reduce类后,你可以看到如下图所示:

      

    此时,你可以跟踪你的代码是否是按照你的算法思路进行。查找问题的根源。

MapReducer程序调试技巧的更多相关文章

  1. .NET程序调试技巧(一):快速定位异常的一些方法

    作为一个程序员,解BUG是我们工作中常做的工作,甚至可以说解决问题能力是一个人工作能力的重要体现.因为这体现了一个程序员的技术水平.技术深度.经验等等. 那么在我们解决BUG的过程中,定位问题是非常重 ...

  2. js程序调试技巧

    1.No "Access-Control-Allow-origin" 解决方案:这是API参数没有穿对的跨域错误,修改API(ajax请求路径)以保证其参数传递正确即可: 2.lo ...

  3. Android 程序调试技巧汇总

    1.Android Studio 引入一个项目作为library https://www.cnblogs.com/lixiangyang521/p/7453322.html 2.Android Stu ...

  4. 使用 Eclipse 调试 Java 程序的技巧

    你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...

  5. LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧

    LTE用户文档 (如有不当的地方,欢迎指正!)     21 Examples Programs(示例程序)   路径 src/lte/examples/ 包含一些示例仿真程序,这些例子表明如何仿真不 ...

  6. 调试技巧 —— 如何利用windbg + dump + map分析程序异常

    调试技巧 —— 如何利用windbg + dump + map分析程序异常 逗比汪星人2011-09-04上传   调试技巧 —— 如何利用windbg + dump + map分析程序异常 http ...

  7. gdb调试运行时的程序小技巧

    使用gdb调试运行时的程序小技巧 标签: 未分类 gdb pstack | 发表时间:2012-10-15 04:32 | 作者:士豪 分享到: 出处:http://rdc.taobao.com/bl ...

  8. Java程序员应该知道的10个Eclipse调试技巧

    Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 1 条件断点 2 异常断点 3 监视点 4 评估/检查 5 修改变量值 ...

  9. (转)程序员应该知道的10个eclipse调试技巧

    调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...

随机推荐

  1. Dynamics AX 2012 R3 Demo 安装与配置 - 配置安装环境 (Step 1)

    AX 2012 R3 发布后,Reinhard一直想体验一把,可是Reinhard所在的公司暂时不会升级到R3版本.这不,Reinhard就打算在个人电脑上安装下,可是安装的过程中,遇到了很多问题,R ...

  2. jquery中没有innerHTML

    本人正在学习使用jQuery. 发现如果我在div或者其他非表单的标签中赋值,原本用普通的js就直接document.getElementById("id").innerHtml( ...

  3. Linux常用命令(三)

    1.top 说明:即时显示 process 的动态 语法格式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]基本参数:d : 改变显示的更新速度,或是在交谈 ...

  4. python 学习笔记十 rabbitmq(进阶篇)

    RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 ...

  5. C# Global Application_Error不执行

    今天在开发过程中遇到一个很奇特的问题,就是 Global 文件中的Application_Error 方法不执行的问题,很是苦恼,查了有关这方面的问题,感觉网友们回答的都有点乱,有些人说 在编译时不需 ...

  6. [转](三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout

    大家好,我是孙广东.   转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:http://www.unityma ...

  7. mac下 codeigniter在apache下去掉index.php

    原文:http://blog.csdn.net/tutngfei1129287460/article/details/18359191 1.要修改Apache 的配置文件,让Apache支持rewri ...

  8. Java 集合 - LinkedList

    一.源码解析 (1). 属性 // 链表长度 transient int size = 0; // 链首和链尾 transient Node<E> first; transient Nod ...

  9. 《BI项目笔记》SSAS部署时发生的问题——元数据管理器中存在错误 解决办法

    在生成和部署期间出错.是否继续?解决办法: 用Microsoft SQL Server Management Studio 连接Analysis Services 然后删除多维数据库,重新布署.这样就 ...

  10. POM.xml 标签详解

    pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以 ...