在我电脑里面:
Hadoop1.2.1中fs.default.name=hdfs://localhost:9000 Hadoop2.2.0中fs.default.name=hdfs://localhost:8020
所以Hive在Hadoop1.2.1中存放数据的绝对路径为:
hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite
其中、home/wyp/cloud/hive/warehouse/是配置文件设置的,如下:
<property> <name>hive.metastore.warehouse.dir</name> <value>/home/wyp/cloud/hive/warehouse</value> <description>location of default database for the warehouse</description> </property>
cite是表的名称。
如果在Hadoop1.2.1平台导入的数据,而在Hadoop2.2.0平台上面查询数据(注意,需要在Hadoop2.2.0平台上同样的位置上存在数据,这样才能查询到结构)将会出现下面的错误:
hive> select * from cite; OK Failed with exception java.io.IOException:java.net.ConnectException: Call From wyp/192.168.142.138 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused Time taken: 4.519 seconds
从查询的结果看出,返回的是OK,但是显示数据出现了java.net.ConnectException异常,这就是上面所说的问题,因为你数据的路径为
hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite
但是你在Hadoop2.2.0平台上查询,从最上面的配置我们可以看出,Hadoop2.2.0平台的hdfs的连接端口为8020,当然不能连上localhost:9000,我们需要连上8020端口。
解决方法:(1)、修改Hadoop2.2.0的fs.default.name=hdfs://localhost:9000,然后重起Hadoop服务。
(2)、进入Mysql数据库,找到SDS表格:
从上面的查询结果我们可以看出,SD_ID为1对应的表格数据存放在hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite路径,我需要修改端口号9000为8020。如下:
然后再查询数据:
hive> select * from cite; OK 1 21 2 5 6 5 3 6 Time taken: 0.509 seconds, Fetched: 4 row(s)
终于见到熟悉的数据了!推荐使用方法一。
本博客文章除特别声明,全部都是原创!原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Hive连接HDFS端口错误解决方法】(https://www.iteblog.com/archives/802.html)
<a href="http://www.iteblog.com/archives/1181" title="Spark源码分析:多种部署方式之间的区别与联系(1)" rel="nofollow">http://www.iteblog.com</a>哈哈