【问题标题】:Connection refused when i run hive select query当我运行配置单元选择查询时连接被拒绝
【发布时间】:2014-11-05 19:24:41
【问题描述】:

我在运行 hive 选择查询时遇到问题。 我在 hive 中创建了 DB(mydb),只要我在 mydb 表上运行查询,就会出现以下错误。

Failed with exception java.io.IOException:java.net.ConnectException: Call From oodles-   Latitude-3540/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

我的 hadoop core-site.xml 文件的配置如下所示

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://192.168.0.114:9000</value>
  <description>The name of the default file system. A URI whose
  scheme and authority determine the FileSystem implementation.
  </description>
</property>
</configuration>

我的 mapred-site.xml.template 文件的配置是

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>192.168.0.114:8021</value>
        <description>The host and port that the MapReduce job tracker runsat.</description>
    </property>
</configuration>

如果我将两个文件中的主机名从 192.168.0.114 更改为 localhost,则配置单元查询工作正常,但不适用于 192.168.0.114

为什么 hive 总是指向 localhost:9000 ,我们不能将其更改为指向我的首选位置(192.168.0.114:9000)吗? 如何修复配置单元选择查询以向我显示上述 hadoop conf 文件配置的结果? 希望各位朋友清楚我的问题!

【问题讨论】:

标签: hadoop hive


【解决方案1】:

我发现了导致此错误的问题

Failed with exception java.io.IOException:java.net.ConnectException: Call From oodles-   Latitude-3540/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

默认情况下,hive 根据你的 namenode 配置创建表,即

hdfs://localhost:9000/user/hive/warehouse.

稍后如果您更改 namenode 的配置,即如果您将 fs.default.name 属性更改为

hdfs://hostname:9000 

在 core-site.xml 中也在 hive-site.xml 中并尝试通过执行选择查询来访问表,这意味着您正在尝试在以前的位置搜索,即 hdfs://localhost:9000/user/hive/warehouse您的名称节点未连接。目前你的 namenode 连接到 hdfs://hostname:9000 这就是它给你的原因

Call From oodles-Latitude-3540/127.0.1.1 to localhost:9000 failed on connection exception

就我而言,我像这样更改了我的 hive-site.xml 文件

<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/new/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>
</property>
<property>
  <name>hadoop.embedded.local.mode</name>
  <value>false</value>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://hostname:9000</value>
</property>
<property>
  <name>mapred.job.tracker</name>
  <value>hostname:8021</value>
</property>
</configuration>

现在当 hive 创建表时,它会从这里选择 fs.default.name 的值。 (主机名是我在 /etc/hosts 中的主机文件中提到的 ip,如下所示)

127.0.0.1    localhost
127.0.1.1    oodles-Latitude-3540
192.168.0.113   hostname

我的 core-site.xml 文件

<configuration>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>
<property>
  <name>fs.default.name</name>
  <value>hdfs://hostname:9000</value>
  <description>The name of the default file system. A URI whose
  scheme and authority determine the FileSystem implementation.
  </description>
</property>
</configuration>

我的 Mapred-site.xml 文件

<configuration>
<property
    <name>mapred.job.tracker</name>
    <value>hostname:8021</value>
</property>
</configuration>

现在,如果您的表位置与您的名称节点相同,即

fs.default.name = hdfs://hostname:9000

那么它不会给你任何错误。

你可以通过执行这个查询来检查你的表的位置 -->

show create table <table name>

任何查询。欢迎随时提问!

【讨论】:

  • 非常感谢,在按照您提到的步骤并重新启动 hiveserver2 后为我工作。但是,它真的需要重新启动吗,不确定。
【解决方案2】:

因为它可以在 localhost 上正常工作。我建议在 /etc/hosts 文件中添加您的 IP 地址。定义所有集群节点的 DNS 名称及其 IP。

希望这会有所帮助。

--更新--

主机映射示例:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.7.192.56 主机名

【讨论】:

  • 我的 /etc/hosts 文件如下所示: 127.0.0.1 localhost 127.0.1.1 oodles-Latitude-3540,现在放置我的 IP 地址并定义所有集群节点的 DNS 名称及其IP # 以下行适用于支持 IPv6 的主机 ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-23
  • 2022-06-23
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-22
  • 2018-12-11
相关资源
最近更新 更多