我有一个名为testdata的HIVE表,列如下
当我发出命令“select * from testdata”时,从hive提示符,它显示整个数据集。但是当我从testdata发出命令select name时,它显示错误
java.net.NoRouteToHostException:没有从[NAMENODE_IP]到[CLUSTER_IP]的主机路由:35946在套接字超时异常时失败:java.net.NoRouteToHostException:没有到主机的路由;有关详细信息,请参阅:http://wiki.apache.org/hadoop/NoRouteToHost。
有人可以帮我找出我做错了什么。
我的Hadoop版本是2.2.0,Hive版本是0.11.0
答案 0 :(得分:1)
检查“主机”文件,系统的当前IP必须是主机文件中的第一个条目。
答案 1 :(得分:1)
我遇到了同样的麻烦所以我想我会告诉你们我做了什么来解决这个问题。
1)在名称节点上禁用防火墙,看看它是否有效
2)如果确实如此,则防火墙阻止节点之间的网络讨论。您必须手动添加规则以允许名称节点IP之间的连接
你可以在这里找到关于iptables这个非常详细的答案的方法 https://serverfault.com/questions/30026/whitelist-allowed-ips-in-out-using-iptables/30031#30031
答案 2 :(得分:0)
您需要正确的相关hadoop配置。蜂巢似乎无法连接jobtracker。
当你查询select * from testdata
时,hive没有使用mapreduce来获得结果。
当您查询select name from testdata
时,hive会调用hadoop来启动mapreduce作业。
所以,让你的hadoop配置正确。