运行配置单元选择查询时连接被拒绝

iih3973s  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(357)

我在运行配置单元选择查询时遇到问题。我已经在配置单元中创建了数据库(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)?如何修复hiveselect查询以显示hadoop conf文件的上述配置的结果?希望你的朋友明白我的问题!

rdrgkggo

rdrgkggo1#

因为它可以与localhost一起工作,所以我建议在/etc/hosts文件中添加您的ip地址。定义所有群集节点的dns名称及其ip。
希望这有帮助。
--更新--
主机Map示例:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.7.192.56主机名

hjzp0vay

hjzp0vay2#

我发现了导致这个错误的问题

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

默认情况下,配置单元根据namenode的配置创建表,即 hdfs://localhost:9000/user/hive/warehouse. 稍后如果您更改namenode的配置,即如果您将fs.default.name属性更改为

hdfs://hostname:9000

在core-site.xml中,也在hive-site.xml中,并尝试通过执行select query来访问表,这意味着您正在尝试搜索以前的位置,即hdfs://localhost:namenode未连接到的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>

现在,当配置单元创建表时,它将从这里选择fs.default.name的值(hostname是我在/etc/hosts中的hosts文件中提到的ip,如下所示)

127.0.0.1    localhost
127.0.1.1    oodles-Latitude-3540
192.168.0.113   hostname

my 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>

现在,如果表位置与namenode相同,即

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

这样你就不会出错了。
通过执行此查询-->

show create table <table name>

任何疑问。随便问吧!

相关问题