无法启动 spark thriftserver(hive-site.xml for spark 没有覆盖默认值)
Unable to start spark thriftserver (hive-site.xml for spark didn't overwrite default value)
背景:
- CentOS7
- hadoop-2.7.3
- spark-2.0.1-bin-hadoop2.7
- apache-hive-2.1.0-bin(仅用于hive --service metastore启动metastore服务)
- 已配置 HADOOP_HOME、SPARK_HOME 和 HIVE_HOME 等
- mysql 5.7.16
- 已将 mysql-connector-java-5.1.40-bin.jar 放入 hive/lib/ 和 spark/jars/
蜂巢-site.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://www.test.com:3306/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://www.test.com:9083</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>
</configuration>
我将 hive-site.xml 放入 hive/conf/ 和 spark/conf/
但是运行开始-thriftserver.sh,我得到了错误日志(在spark_home/logs/spark--HiveThriftServer2.out):
......
INFO HiveUtils: Initializing HiveMetastoreConnection version 1.2.1 using Spark classes.
INFO metastore: Trying to connect to metastore with URI thrift://www.test.com:9083
INFO metastore: Connected to metastore.
......
DEBUG ObjectStore: Overriding javax.jdo.option.ConnectionURL value null from jpox.properties with jdbc:derby:memory:;databaseName=/tmp/spark-37dcab7f-655a-4506-abd7-492a8620a33e/metastore;create=true
......
INFO MetaStoreDirectSql: Using direct SQL, underlying DB is DERBY
......
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
在日志中我们可以看到 属性 "hive.metastore.uris" 成功了。
但似乎其他 mysql 相关属性不起作用,Metastore 仍然使用默认数据库 derby。
感谢任何帮助!谢谢
已解决:
我删除了 hive.metastore.uris 因为我只是在本地使用 hive。
<property>
<name>hive.metastore.uris</name>
<value>thrift://www.test.com:9083</value>
</property>
将 hive.metasotre.schema.verification 设为假。感谢 Nirmal 的帮助。
找到这个错误日志
Caused by: MetaException(message:Version information not found in metastore
设置,
的价值
hive.metastore.schema.verification
在 hive 中为 false-site.xml 在 hive 和 spark conf 中并重新启动服务并重试
背景:
- CentOS7
- hadoop-2.7.3
- spark-2.0.1-bin-hadoop2.7
- apache-hive-2.1.0-bin(仅用于hive --service metastore启动metastore服务)
- 已配置 HADOOP_HOME、SPARK_HOME 和 HIVE_HOME 等
- mysql 5.7.16
- 已将 mysql-connector-java-5.1.40-bin.jar 放入 hive/lib/ 和 spark/jars/
蜂巢-site.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://www.test.com:3306/metastore</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://www.test.com:9083</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>
</configuration>
我将 hive-site.xml 放入 hive/conf/ 和 spark/conf/
但是运行开始-thriftserver.sh,我得到了错误日志(在spark_home/logs/spark--HiveThriftServer2.out):
......
INFO HiveUtils: Initializing HiveMetastoreConnection version 1.2.1 using Spark classes.
INFO metastore: Trying to connect to metastore with URI thrift://www.test.com:9083
INFO metastore: Connected to metastore.
......
DEBUG ObjectStore: Overriding javax.jdo.option.ConnectionURL value null from jpox.properties with jdbc:derby:memory:;databaseName=/tmp/spark-37dcab7f-655a-4506-abd7-492a8620a33e/metastore;create=true
......
INFO MetaStoreDirectSql: Using direct SQL, underlying DB is DERBY
......
org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
在日志中我们可以看到 属性 "hive.metastore.uris" 成功了。
但似乎其他 mysql 相关属性不起作用,Metastore 仍然使用默认数据库 derby。
感谢任何帮助!谢谢
已解决:
我删除了 hive.metastore.uris 因为我只是在本地使用 hive。
<property>
<name>hive.metastore.uris</name>
<value>thrift://www.test.com:9083</value>
</property>
将 hive.metasotre.schema.verification 设为假。感谢 Nirmal 的帮助。
找到这个错误日志
Caused by: MetaException(message:Version information not found in metastore
设置,
的价值
hive.metastore.schema.verification
在 hive 中为 false-site.xml 在 hive 和 spark conf 中并重新启动服务并重试