问题提出

1.输出空文件之前遇到过ArrayIndexOutOfBoundsException->数组越界的错误,解决也很简单:加上判断语句 。其实当时是有些怀疑是不是读取数据错误了,但是考虑可能是最后一行空值数据被读到了导致出现的这个错误,就没往下想。
2).在执行MR任务时,mapper和reducer都正常运行,但是hdfs输出文件为空。(任务是关于MR执行排序任务的)
数据如下:

排查经历

1.查看core-site.xml是不是路径(hadoop.tmp.dir属性)配置错误了,导致数据放错了位置。然而 不是
2.因为没有报错所以排除了是集群的问题。然后就是考虑的是可能程序错误了,但是一直没有发现错误。期间也尝试过重写输入文本,重写MR程序,重新打包等操作。
3.注意到了命令行MR程序执行结束后留下的信息:

Mapper的输出为空(Map output records=0)
这说明错误完全是出现在mapper阶段
尝试使用了程序经典的输出语句标志位,但是因为没找到它的输出,就暂时放弃了。本来想使用hadoop本地模式运行MR并使用Debug的方式查找错误的,感觉有些复杂就舍弃了。最后网上查询了如何查看MR程序的println输出(方法末尾附上)后,发现了问题。
这里需要查看logs文件(如果添加了历史服务器,则可以直接查看历史服务器的map任务,找到最新执行的任务,查看logs文件。没有则见最后查询logs日志的方法)
println输出结果如下:

可以发现得到的每一行数据都没有问题但是得到的数组长度始终为1,说明map任务中的split函数(以“\t”拆分)并没有将数据拆分。查看输入文件发现,间距很小。怀疑是间隔符的问题。但是在vim编辑输入文件时发现确实\t间距就是很小。多次尝试之后,发现结果:
vim编辑器并不很好适应所有外部文件复制的\t,很可能将其看为空格了。如果出现这种情况要么将数据拿出来使用记事本重新添加\t再复制到vim编辑器中,要么直接使用vim编辑器将间隔修改为\t
修改结束后:MR任务正常运行
Map输出如下:

MR运行结果如下:

小结

1.重点学会看logs日志文件,从日志文件中我们可以发现很多错误,也可以很好帮助我们解决问题。
2.遇到错误的时候,先考虑自己翻译下错误,不要忙着找文章看是什么错误(之前我就是…),比如数组越界异常ArrayIndexOutOfBoundsException,翻译过来就很好理解错误在哪里了。
3.使用好MR程序添加println输出的tip,可以提示自己那些位置出错了,快速反应。

补充查看日志

有历史服务器(JobHistoryServer)的:
找到最新执行完的MR程序点击history查看
1.


3.

4.

向下翻就可以找到我们添加的输出结果,如果不想使用本地的集群运行模式通过debug找错的,可以使用这个方法。
无历史服务器的:
打开hdfs web界面,打开/tmp/logs/目录找到用户的最新log文件,如图:


将文件下载下来搜索stdout,一直下一个就可找到相应的输出结果:

Mapreduce,mapper任务无输出以及相关问题解决,日志的正确用法相关推荐

  1. [工具] 解决sublime text运行javascript console无输出问题

    1.使用nodeJS在sublime text 运行javascript 下载安装nodeJS 在sublime text新建build system:tools->build system-& ...

  2. 【2020】win10java(jdk安装)环境变量配置和相关问题解决

    [2020]win10java环境变量配置和相关问题解决 写在前面的话 前置条件(阅读以下内容需要掌握的知识) 准备 常见问题一览 安装后如何配置环境变量 剩余的问题 为了测试需要准备的 1.版本不统 ...

  3. STC51和STM32使用串口输出中文乱码问题解决

    STC51和STM32使用串口输出中文乱码问题解决 问题描述:在进行串口实验时,我们想通过串口调试助手来输出中文信息, 但是我们经常会发现在串口调试助手上会输出乱码,跟我们预期的中文信息不符,见以下图 ...

  4. ADOBE CS3 安装相关问题解决

    ADOBE CS3 安装相关问题解决(部分解决方案收集自互联网,没有经过测试) ps:2008-4-26 补充一下,有时cs3安装不成功,是因为装到了中文目录下了.应该装到英文目录下,这一点也需要注意 ...

  5. Microsoft office Word 批注相关问题解决

    Microsoft office word 批注相关问题解决 目录 Microsoft office word 批注相关问题解决 1.增添并显示批注 2.批注显示及取消操作 3.更改批注者姓名 4.将 ...

  6. DC-DC无输出???

    问题描述: 最近在项目中发现产品DC-DC无输出? 问题解决过程:分析电路图后发现DC-DC的使能端直接与DC-DC的输入直接连接在一起并且直接与MCU的GPIO口连接在一起,通过MCU的GPIO口输 ...

  7. shell脚本自动执行,top命令无输出

    shell脚本在系统启动时推后台自动执行,发现其中/usr/bin/top -n 1 -c -b -u ceph 命令并无输出 但是系统启动之后手动执行脚本,&推后台脚本中的top仍然能够正常 ...

  8. PHP mkdir()无写权限的问题解决方法

    PHP mkdir()无写权限的问题解决方法 参考文章: (1)PHP mkdir()无写权限的问题解决方法 (2)https://www.cnblogs.com/cangqinglang/p/101 ...

  9. MySQL安装步骤及相关问题解决

    MySQL安装步骤及相关问题解决 参考文章: (1)MySQL安装步骤及相关问题解决 (2)https://www.cnblogs.com/baimt/p/5688517.html 备忘一下.

最新文章

  1. Redis 日志篇:无畏宕机实现高可用的杀手锏
  2. 用深度优先搜索解迷宫问题
  3. 基于Python Tornado的在线问答系统
  4. CSS 使用@import url()与link href 的区别
  5. php redis mset,MSET命令_视频讲解_用法示例-redis编程词典-php中文网
  6. Matlab中plot函数绘图基本用法
  7. 视频创作助力企业营销
  8. raid重构原理_5个重构原理示例
  9. mysql master线程 fork_多线程中fork的坑
  10. day08-linux权限(chmod chown umask chattr)
  11. PID控制及公式讲解
  12. 商品模块的业务流程图
  13. Cloudera 简介、安装和升级、管理、操作文档
  14. org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold
  15. 参考文献名称怎么复制_PDF格式的英文文献怎么翻译成中文?教你一招最简单快速的办法...
  16. Java将图片转为Base64
  17. mybatis parametertype可以不填么
  18. 【Skill】从 WPS 步入Office 365
  19. 「衡水中学语录分享」喜欢点波关注呗
  20. linux deploy中文版下载,Linux Deploy

热门文章

  1. PTA-习题11-2 查找星期 (15 分)-enum
  2. MFC中修改静态文本框中文字的字体、颜色
  3. VC中操作INI文件的API
  4. Flink 在又拍云日志批处理中的实践
  5. Linux下查看系统配置
  6. 如何分析常见的TCP问题?
  7. Python的列表推倒式、生成器及迭代器
  8. 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
  9. 音视频技术开发周刊 | 206
  10. 感谢有你 | LiveVideoStackCon 2020 北京站优秀出品人、讲师与志愿者