hive卡在 kill command不动不能执行的原因及解决方案

hive进行聚合查询的时候卡在kill command,不能往下进行。如下图:在这里插入图片描述

当执行select*from students;语句是可以运行出结果,但是只要附加条件进行查询就会卡死在这个地方,返回不出结果。

解决方案:

一、

1、select*from students 没有问题,但一旦执行select count() from students where gender=‘女’ 后就不继续执行,原因是 select * from table 是直接在hive数据库中直接执行的,select count() from students where gender=‘女’ 确实调用了mapreduce来执行。

2、那么调用了mapreduce 之后为什么就停留在那里了呢,直接执行了官网的mapreduce的wordcount后发现相同的情况。

3、 经过上述排查,那么肯定是hadoop配置不对了,由于mapreduce的都是在datanode上执行的,所以初步认定为namenode和datanode之间没有联通。

4、于是检查 namenode的hosts文件和slave文件,修改为对应的主机名及ip之后,重新运行wordcount,成功。

5、 重新运行select count() from students where gender=‘女’ 后,成功。
故,由此得出结论,当mapduce运行不下去的情况,则主要检查namenode和datanode之间的通信情况,包括但不限于以下几种:

(1)hosts配置问题,没有把datanode的主机名写入namenode主机的hosts文件中。
(2) slave配置问题, 没有把datanode的主机名写入namenode主机的slave文件中。
(3) ssh无密码访问没有配置。

二、

如果进行上述操作后仍然卡死在kill command那还有一种可能就是NodeManager分配的物理内存太小,导致任务无法提交,以致假死现象。那么可以通过修改配置文件来增大物理内存大小。
我们可以通过命令行修改配置文件,找到yarn-site.xml配置文件加入下面内容:

<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>20480</value>
</property>
<property>
   <name>yarn.scheduler.minimum-allocation-mb</name>
   <value>2048</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>2.1</value>
</property>

yarn.scheduler.minimum-allocation-mb下的value值2048可以根据自己主机的内存进行更改。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值