mapreduce运行过程反复卡在[org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy原因以及解决办法

先贴具体info:

INFO [org.apache.hadoop.mapred.ReduceTask] - Using ShuffleConsumerPlugin: org.apache.hadoop.mapreduce.task.reduce.Shuffle@6c57fea9
2017-08-15 15:51:35,642 INFO [org.apache.hadoop.mapreduce.task.reduce.MergeManagerImpl] - MergerManager: memoryLimit=1503238528, maxSingleShuffleLimit=375809632, mergeThreshold=992137472, ioSortFactor=10, memToMemMergeOutputsThreshold=10
2017-08-15 15:51:35,643 INFO [org.apache.hadoop.mapreduce.task.reduce.EventFetcher] - attempt_local19506925_0001_r_000000_0 Thread started: EventFetcher for fetching Map Completion Events
2017-08-15 15:51:36,238 INFO [org.apache.hadoop.mapreduce.Job] -  map 100% reduce 0%
2017-08-15 15:51:41,595 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:44,596 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:47,597 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:50,597 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:53,598 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:56,598 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:51:59,599 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:02,601 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:05,601 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:08,601 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:11,602 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:14,602 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:17,602 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy
2017-08-15 15:52:20,603 INFO [org.apache.hadoop.mapred.LocalJobRunner] - reduce > copy

......................

一直循环跳出,并且在HDFS上会有创建目录操作,当然目录操作里是没有结果的。

网络上说是因为我们编写的mapreduce代码中reduce出现死循环,这个是没错的、

但是我的代码里并没有包含reduce函数,我直接用map函数作为结果输出,于是可以想到是因为没有告诉程序我们不执行reduce函数

所以程序一直在找reduce作为输入?(是否可以这么说呢,我不能百分百确定)

于是我在程序中加入如下代码:job.setNumReduceTasks(0);          //设置不进行reduce任务,否则任务会卡在map 100% reduce0 % 后

程序跑通:

以上,希望能帮到你。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值