分享

hadoop+hbase运行时总是任务失败

elena 发表于 2015-6-25 22:29:10 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 31284
程序一直都正常运行,之后突然总是显示task failed to report status for 600 seconds . Killing! , 一开始以为是task处理时间过长导致的超时,将超时时间设置到较大值之后仍报错,之后发现在查询HBase表时,一直显示同一个warn:

warn: HRegionInfo was null or empty in Meta for XX_table ......

为什么突然就出现这种情况了,百思不得其解啊。

已有(7)人评论

跳转到指定楼层
starrycheng 发表于 2015-6-25 23:40:51
hadoop有个超时时间,当运行的task在某个秒内不向jobtracker报告时,那么jobtracker会认为次task失败,然后会将其杀死。
默认时间内为报告可能是因为该task执行时间过长,当执行到默认时间是并未执行完毕,所以导致将其杀死。

解决方法:
1.减少task运行的时间
2.增加超时时间
<1>代码中设置
job.getConfiguration().setInt(“mapred.task.timeout”, 6000000);
(单位:毫秒)
<2>配置文件中设置
<property>
  <name>mapred.task.timeout</name>
  <value>6000000</value>
</property>

回复

使用道具 举报

elena 发表于 2015-6-25 23:42:17
starrycheng 发表于 2015-6-25 23:40
hadoop有个超时时间,当运行的task在某个秒内不向jobtracker报告时,那么jobtracker会认为次task失败,然后 ...

都试过了,应该不是这个问题,有几个task就陷在那了
回复

使用道具 举报

starrycheng 发表于 2015-6-25 23:45:51
elena 发表于 2015-6-25 23:42
都试过了,应该不是这个问题,有几个task就陷在那了

warn: HRegionInfo was null or empty in Meta for XX_table ......
这个警告应该关系不是太大。
上面被杀死,除了超时,还真没有想到别的问题。

楼主确认配置生效了
回复

使用道具 举报

starrycheng 发表于 2015-6-25 23:51:41
starrycheng 发表于 2015-6-25 23:45
warn: HRegionInfo was null or empty in Meta for XX_table ......
这个警告应该关系不是太大。
上面 ...

有出现task failed to report status for 6000000 seconds . Killing! 这个错误
回复

使用道具 举报

喵喵 发表于 2015-6-26 00:27:23
这个错误一般map报。如果在指定时间段内没有心跳(600秒没处理完一条记录)这个task就被杀死了。
解决:
从hbase角度,看map里的什么操作花了这么长时间,优化它,使map每条记录在600秒内处理完成。
从mr角度,如果hbase方面没有优化空间,那么把耗时的语句拆解成几步或做成循环,每完成一步就手动报告一次进度context.progress()。

推荐前一种方式。后一种总觉得像在欺骗jobtracker。。。
回复

使用道具 举报

elena 发表于 2015-6-26 07:41:10
回复

使用道具 举报

一曲离殇 发表于 2017-11-17 20:49:26
elena 发表于 2015-6-26 07:41
谢谢大家的帮助,问题解决了,是hbase元数据表hbase:meta出现了问题,使用hbase hbck命令查看时,发现报ERR ...

你这个怎么修复的,我修复了几次没成功[mw_shl_code=applescript,true]Number of empty REGIONINFO_QUALIFIER rows in hbase:meta: 1[/mw_shl_code]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条