欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题

程序员文章站 2022-03-08 08:33:13
...

【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题

如下图,hive提交聚合查询的时候,在这步卡主不动假死,也不报错,log也查不出来,
但是当运行像select*from students;这种语句是却能够查询到数据,
【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题

经过排查,解决思路如下:

  1. select * from students 语句没有问题,但一旦执行 select count() from students where gender=‘男’ 语句后就不继续执行,原因是select * from students 语句是直接在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. 重新运行hive select count(*) from students where gender=‘男’ 后,依旧是在哪里卡住不动。

  6. 经过上述过程,那么说明不是namenode和datanode之间的连通问题了,难道是因为是Hive没有连接上mapreduce。

  7. 查看配置文件hive-env.sh,发现并不是这个问题。
    【日常踩坑】解决hive运行到kill command这一步之后卡住不动的问题

  8. 那么可能就是内存方面的原因了,经过检查是由于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>
  1. 重新运行hive select count(*) from students where gender=‘男’ 后,查询成功,ok问题解决。
相关标签: hive