【问题标题】:Spark tries to connect to localhost instead of configured serversSpark 尝试连接到 localhost 而不是配置的服务器
【发布时间】:2018-07-10 00:47:06
【问题描述】:

出现此错误信息:

查询错误:org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: java.net.ConnectException Call From undefined.hostname.localhost/192.168.xx.xxx to localhost:9000连接异常失败:java.net.ConnectException:连接被拒绝;更多详细信息请参见:http://wiki.apache.org/hadoop/ConnectionRefused);

不明白为什么会访问localhost:9000,我的core-site.xml中的主机是hdfs://192.168.xx.xx:9000,为什么访问localhost:9000
它是默认主机吗?

【问题讨论】:

  • 请出示您的/etc/hosts文件内容
  • 127.0.0.1 localhost 255.255.255.255 广播主机 ::1 localhost 192.168.60.194 hadoop00 192.168.60.168 hadoop01 192.168.60.172 hadoop02

标签: hadoop apache-spark


【解决方案1】:

请确保 hive-site.xml 存在于您的 spark 配置目录 /etc/spark/conf/ 中并配置 hive 配置设置。

## core-site.xml 
fs.defaultFS

## Hive config 
hive.metastore.uris

【讨论】:

  • 我在我的配置中没有找到名为 fs.defaultFS 的属性,并且 hive.metastore.uris 没有解决。以及我如何设置 hive.metastore.uris 和 fs.defaultFS。谢谢,SatckOverFlow 太棒了,请尽快回复我的问题。
  • 请编辑您的其他答案,而不是发布两个
【解决方案2】:

在 hive-site.xml 中,可以进行如下配置。请配置您的 Hive 元存储详细信息。

<property>
<name>fs.defaultFS</name>
<value>hdfs://ip-xx.xx.xx.xx:8020</value>
</property>

<property>
<name>hive.metastore.uris</name>
<value>thrift://ip-xx.xx.xx:9083</value>
</property>

<property>
<name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost/metastorecreateDatabase
IfNotExist=true</value>
<description>metadata is stored in a MySQL server</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>MySQL JDBC driver class</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>user name for connecting to mysql server </description>
</property>

<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password for connecting to mysql server </description>
</property>
</configuration>

【讨论】:

  • 我可以查询,删除表,但是我不能创建表。创建表时报同样的问题
  • 能否提供完整的堆栈跟踪消息
  • spark-sql> 创建表 t(名称字符串); 18/02/01 09:26:00 INFO 执行。SparkSqlParser:解析命令:创建表 t(名称字符串)查询错误:org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(消息:得到异常: java.net.ConnectException 从 hadoop00/192.168.60.194 调用到 localhost:9000 连接异常失败:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:wiki.apache.org/hadoop/ConnectionRefused);
【解决方案3】:

您的错误与 HDFS 相关,而不是 Hive 或 SparkSQL

如果您想连接到正确的 Hadoop 环境而不是使用默认设置,则需要确保您的 HADOOP_HOMEHADOOP_CONF_DIRspark-env.sh 中正确设置。

【讨论】:

  • 我已经在我的 spark-env.sh 中导出了 HADOOP_HOME 和 HADOOP_CONF_DIR。
  • export SCALA_HOME=/usr/local/Cellar/scala/2.11.8 export HADOOP_HOME=/usr/local/Cellar/hadoop/2.6.4 export SPARK_MASTER_HOST=hadoop00 export SPARK_LAUNCH_WITH_SCALA=0 export SPARK_LIBRARY_PATH=$ {SPARK_HOME}/jars export SCALA_LIBRARY_PATH=${SPARK_HOME}/lib export SPARK_MASTER_WEBUI_PORT=18080 if [ -n "$HADOOP_HOME" ];然后 export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:${HADOOP_HOME}/lib/native fi export HADOOP_CONF_DIR=/usr/local/Cellar/hadoop/2.6.4/etc/hadoop
  • 我可以通过sparksql向hive仓库插入数据,结果hdfs是对的。但是我不明白为什么我通过sparksql创建表时访问的是localhost:9000。跨度>
【解决方案4】:

我在 Mysql 中重置了元存储。我当时在我的core-site.xml中使用localhost,我初始化了我的metastore。所以我重置了metastore,问题就解决了。

【讨论】:

  • 您应该提供您执行此操作的步骤,以便帮助其他人
【解决方案5】:

首先,进入 mysql 命令行,删除你在 hive-site.xml 中设置的数据库(元存储)。

然后,把字典改成$HIVE_HOME/bin,执行schematool -initSchema -dbType mysql,问题就解决了。mysql中metastore太迟报错(我已经在standby环境下设置了metastore),稍后我转向集群环境,但是metastore是previous,所以我可以在hive中创建表,而不是在sparksql中。

感谢帮助我的人。@Ravikumar,@cricket_007

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-19
    • 2018-10-07
    • 2012-11-23
    • 1970-01-01
    • 2017-07-12
    • 2019-06-13
    • 1970-01-01
    • 2021-07-03
    相关资源
    最近更新 更多