【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题
【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题
如下图,hive提交聚合查询的时候,在这步卡主不动假死,也不报错,log也查不出来,
但是当运行像select*from students;这种语句是却能够查询到数据,
经过排查,解决思路如下:
-
select * from students 语句没有问题,但一旦执行 select count() from students where gender=‘男’ 语句后就不继续执行,原因是select * from students 语句是直接在hive数据库中直接执行的,select count() from students where gender=‘男’ 语句却需要调用了mapreduce来执行。
-
那么调用了mapreduce 之后为什么就卡在哪里不动呢,直接执行了mapreduce的wordcount后发现相同的情况。
-
经过上述排查,那么肯定是hadoop配置不对了,由于mapreduce的都是在datanode上执行的,所以初步认定为namenode
和datanode之间没有互相连通。
-
于是检查 namenode的hosts文件和slave文件,修改为对应的主机名及ip之后,重新运行wordcount,但是仍旧不行。
-
重新运行hive select count(*) from students where gender=‘男’ 后,依旧是在哪里卡住不动。
-
经过上述过程,那么说明不是namenode和datanode之间的连通问题了,难道是因为是Hive没有连接上mapreduce。
-
查看配置文件hive-env.sh,发现并不是这个问题。
-
那么可能就是内存方面的原因了,经过检查是由于yarn的物理可用内存太小,改大一些就可以了。
.<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480<alue>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048<alue>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1<alue>
</property>
- 重新运行hive select count(*) from students where gender=‘男’ 后,查询成功,ok问题解决。
上一篇: wpf 设置无边框的透明button
下一篇: Hive 基础知识(一)