分享

Hive连接HDFS端口错误解决方法

本帖最后由 pig2 于 2015-3-8 23:38 编辑
问题导读:
执行select * from table出现
Failed with exception java.io.IOException:java.net.ConnectException:
错误,可能的原因是什么?





配置说明:

  1. Hadoop1.2.1中fs.default.name=hdfs://localhost:9000
  2. Hadoop2.2.0中fs.default.name=hdfs://localhost:8020
复制代码

所以Hive在Hadoop1.2.1中存放数据的绝对路径为:
  1. hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite
复制代码

其中、home/wyp/cloud/hive/warehouse/是配置文件设置的,如下:
  1. <property>
  2.   <name>hive.metastore.warehouse.dir</name>
  3.   <value>/home/wyp/cloud/hive/warehouse</value>
  4.   <description>location of default database for the warehouse</description>
  5. </property>
复制代码
cite是表的名称。
  如果在Hadoop1.2.1平台导入的数据,而在Hadoop2.2.0平台上面查询数据(注意,需要在Hadoop2.2.0平台上同样的位置上存在数据,这样才能查询到结构)将会出现下面的错误:
  1. hive> select * from cite;
  2. OK
  3. Failed with exception java.io.IOException:java.net.ConnectException:
  4. Call From wyp/192.168.142.138 to localhost:9000 failed on connection
  5. exception: java.net.ConnectException: Connection refused;
  6. For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
  7. 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表格:
hdfs9000.jpg
Hive 连接HDFS


从上面的查询结果我们可以看出,SD_ID为1对应的表格数据存放在hdfs://localhost:9000/home/wyp/cloud/hive/warehouse/cite路径,我需要修改端口号9000为8020。如下:
hdfs8020.jpg
Hive 连接HDFS


然后再查询数据:
  1. hive> select * from cite;
  2. OK
  3. 1        21
  4. 2        5
  5. 6        5
  6. 3        6
  7. Time taken: 0.509 seconds, Fetched: 4 row(s)
复制代码

终于见到熟悉的数据了!推荐使用方法一。











已有(1)人评论

跳转到指定楼层
june_fu 发表于 2015-3-8 23:35:10
SDS,以前还真不知道,谢谢分享咯,嘿嘿
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条