hive中执行了select count(1) from table 后,一直无反应

shuttle02 发布于 2016/01/11 14:26
阅读 5K+
收藏 0
我部署了一个节点的hadoop(2.6.0)伪分布式系统,然后部署了hive,启动了hadoop和hive之后,通过命令

# hive --service cli   进入hive的客户端,

然后执行一个查询 show tables;

hive_focus

显示有这个表,然后我执行 select * from hive_tables;

可以查出数据

但是,当我执行 select count(1) from hive_tables;之后,查询一直停留在这里

我只有一个节点,一条数据,按理说不可能一直不往下执行啊,求各位大神指点一下,刚研究hadoop,不太明白,谢谢各位!

加载中
0
s
shuttle02
启动了hadoop后,启动了hive,

进入hive-cli,执行 select count(1) from table,屏幕显示到kill command后不继续执行,

经过问题排查,解决思路如下:
1. select * from table 没有问题,但一旦执行select count(1) from table 后就不继续执行,原因是
    select * from table 是直接在hive数据库中直接执行的,select count(1) from table 确实调用了mapreduce来执行。
2. 那么调用了mapreduce 之后为什么就停留在那里了呢,直接执行了官网的mapreduce的wordcount后发现相同的情况。
3. 经过上述排查,那么肯定是hadoop配置不对了,由于mapreduce的都是在datanode上执行的,所以初步认定为namenode
   和datanode之间没有联通。
4. 于是检查 namenode的hosts文件和slave文件,修改为对应的主机名及ip之后,重新运行wordcount,成功。
5. 重新运行hive select count(1) from table 后,成功。


故,由此得出结论,当mapduce运行不下去的情况,则主要检查namenode和datanode之间的通信情况,包括但不限于以下几种:
1. hosts配置问题,没有把datanode的主机名写入namenode主机的hosts文件中。
2. slave配置问题, 没有把datanode的主机名写入namenode主机的slave文件中。
3. ssh无密码访问没有配置。

0
尼古丁诱惑的男人
尼古丁诱惑的男人
当select * from 全表时候  不会执行mapreduce 也就不会消耗内存与CPU,count(1)的时候就在创建job 如果一直卡在那里不动的话~先看下你jps的几个进程是否正确。在就是你机器配置不够~~亲~~
k
kieryum
我的不是卡在啦job任务创建,我的时卡在啦,hive命令上出项=现,job被kill啦,就是hadoo job kill jobid;就是被告知这个命令被执行啦
0
漓江
漓江

其实看你的描述,应该是你前期的检查不足导致的。

1)hadoop伪分布式搭建好后,使用hadoop dfsadmin -report可以查看,是否所有的节点都已经成功启动。

2)使用jps查看进程,应该会有datanode,nodemanger,namenode,secondrynamenode,resourcemanger这些进程,如果缺少那一个的话,那证明hadoop环境没有成功启动

返回顶部
顶部