Hive提交的MapReduce任务执行中段挂起(从Running状态跳回为Accepted状态)问题解决记录...

 一个用Java写的计算程序通过JDBC的方式连接Hive数据库,执行SQL查询语句查询数据。结果对应的MapReduce任务执行到Map 18% Reduce xx%之后,所有的进度输出都变为了Map 0% Reduce 0%

在排查Java语句无问题后,kill掉了Job,由于Job的log已经不可查,直接尝试重新运行程序

新的Hive查询创建的MapReduce任务阻塞在了Accepted状态,无法开始Running

仔细检查了Hadoop的Web页面,发现当前集群的5个节点都变为了Unhealthy状态,可用的Memory和VCore都为0,推测应是资源不足的原因导致的任务无法开始执行

用“Hadoop Unhealthy”作为关键词,百度到的网页,有一些的做法是重启Yarn的NodeManager和ResourceManager,然而之前已经做过多次重启操作,并无效果

又找到了一篇文章,提到了Unhealthy原因是bad file,遂查看本集群的Unhealthy原因,发现也是bad file(包括local-file和log-file),确定为是剩余存储空间不足,导致yarn将五个节点都标记为不可用,因此整个集群处于无资源可以执行任务的状态

集群的5个节点,使用磁盘比例均达到90%以上,甚至更多,由于暂时无法进行数据转移和删除操作,找到了临时解决方法——提高节点健康度检查中磁盘占用的最大值,参考链接:http://stackoverflow.com/questions/29010039/yarn-unhealthy-nodes

 

更改$HADOOP_HOME/etc/hadoop/目录下的yarn-site.xml文件,增加property:

 <property>
     <name>yarn.nodemanager.disk-health-checker.min-healthy-disks</name>
     <value>0.0</value>
  </property>
  <property>
     <name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
     <value>99.0</value>
 </property>

为了为每个节点磁盘稍稍预留空间,此处的最大值设为了99%。

更改后,执行stop-yarn.sh和start-yarn.sh,重启NodeManager和ResourceManager,在Hadoop的Web页面刷新(http://namenode:8088//),可以看到节点重新回到了Headthy状态,有了可用的Memory和VCore资源,Job可以正常执行了。

 

不过以上还是权宜之计,为了让集群可以健康稳定的运行,还是需要及时对集群的磁盘进行清理,备份不常用的数据or补充存储设备

转载于:https://www.cnblogs.com/KattyJoy/p/5850223.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值