Hadoop Spark尝试连接到本地主机,而不是已配置的服务器

Hadoop Spark尝试连接到本地主机,而不是已配置的服务器,hadoop,apache-spark,Hadoop,Apache Spark,此错误信息显示为: 查询中出错:org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(消息:Get exception:java.net.ConnectException从undefined.hostname.localhost/192.168.xx.xxx调用localhost:9000失败,连接异常:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:) 我不明白为什么我要访问local

此错误信息显示为:

查询中出错:org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(消息:Get exception:java.net.ConnectException从undefined.hostname.localhost/192.168.xx.xxx调用localhost:9000失败,连接异常:java.net.ConnectException:连接被拒绝;有关详细信息,请参阅:)

我不明白为什么我要访问localhost:9000,我的core-site.xml中的主机是hdfs://192.168.xx.xx:9000,我为什么访问localhost:9000

它是默认主机吗?

请确保您的spark配置目录/etc/spark/conf/中存在hive-site.xml,然后配置配置配置单元设置

## core-site.xml 
fs.defaultFS

## Hive config 
hive.metastore.uris

在hive-site.xml中,可以按如下方式配置。请配置配置单元元存储详细信息

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


fs.defaultFS
hdfs://ip-xx.xx.xx.xx:8020
hive.metastore.uris
thrift://ip-xx.xx.xx:9083
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost/metastorecreateDatabase
IfNotExist=true
元数据存储在MySQL服务器中
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
MySQL JDBC驱动程序类
javax.jdo.option.ConnectionUserName
蜂箱
用于连接到mysql服务器的用户名
javax.jdo.option.ConnectionPassword
123456
连接到mysql服务器的密码

您的错误与HDFS有关,而与Hive或SparkSQL无关


如果要连接到正确的HADOOP环境而不是使用默认设置,则需要确保在
spark env.sh
中正确设置了
HADOOP_HOME
HADOOP_CONF_DIR

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

首先,转到mysql命令行,删除您在hive-site.xml中设置的数据库(metastore)

然后,将dictory更改为$HIVE_HOME/bin,执行schematool-initSchema-dbtypemysql,问题就解决了。由于mysql中的元存储太晚了(我已经在备用环境中设置了元存储),我稍后转向集群环境,但元存储是先前的,因此我可以在HIVE中创建表,而不是在sparksql中


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

我在配置中找不到名为fs.defaultFS的属性,hive.metastore.uris尚未解决。我如何设置hive.metastore.uris和fs.defaultFS。谢谢,SatckOverFlow很神奇,很快回答我的问题。请编辑你的其他答案,而不是发布两个我可以查询、删除表,但我无法创建表。当我创建表时,它会出现相同的错误。请提供完整的堆栈跟踪消息Spark sql>创建表t(名称字符串);18/02/01 09:26:00 INFO execution.SparkSqlParser:解析命令:查询中的create table t(名称字符串)错误:org.apache.hadoop.hive.ql.metadata.HiveException:MetaException(消息:get exception:java.net.ConnectException从hadoop00/192.168.60.194调用localhost:9000失败,连接异常:java.net.ConnectException:连接被拒绝;有关更多详细信息,请参阅:);请显示您的
/etc/hosts
文件内容127.0.0.1 localhost 255.255.255.255 broadcasthost::1 localhost 192.168.60.194 hadoop00 192.168.60.168 hadoop01 192.168.60.172 hadoop02I已在我的spark-env.sh中导出HADOOP_HOME和HADOOP_CONF_DIR。导出SCALA_HOME=/usr/local/cill/SCALA/2.11.8导出HADOOP_HOME=/usr/local/Cellar/hadoop/2.6.4 export SPARK\u MASTER\u HOST=hadoop00 export SPARK\u LAUNCH\u WITH_SCALA=0 export SPARK\u LIBRARY\u PATH=${SPARK\u HOME}/jars export SCALA\u LIBRARY\u PATH=${SPARK\u HOME}/lib export SPARK\u MASTER\u WEBUI\u PORT=18080如果[-n“$hadoop\u HOME”],则export SPARK\u LIBRARY SPARK\u LIBRARY=$SPARK\u LIBRARY\u lib/lib/native fi export HADOOP_CONF_DIR=/usr/local/cillar/HADOOP/2.6.4/etc/HADOOP我可以通过sparksql将数据插入到配置单元仓库中。结果证明hdfs是正确的。但我不明白为什么我在通过sparksql创建表时访问localhost:9000。您应该提供执行此操作所遵循的步骤,以便它可以帮助其他人