当我跑步时:
hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.root.logger=INFO,console
它显示
启动HiveServer2
没有任何内容监听端口10000和10001
答案 0 :(得分:2)
HiveServer2
服务不会输出错误信息,导致难以诊断问题。您可以尝试启动Hive提供的metastore
服务,该服务侦听9083端口,并且在未正确设置配置时可能会提供一些信息:
hive --service metastore # not detach from terminal to see logs
对于我来说,此服务无法启动,并显示错误消息:
MetaException(message:Hive Schema version 3.1.0 does not match metastore's schema
version 1.2.0 Metastoed or corrupt)
One of the direct solution要解决此错误,是如果计算机中只有一个配置单元版本(另一种解决方法是modify the metastore_db
version),则通过设置hive-site.xml
来忽略版本差异:>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
此问题解决后,HiveServer2
服务可以在端口10000上运行并监听。
hive --service hiveserver2 > /dev/null 2>&1 &
如果您的
HiveServer2
通过metastore
或Derby
JDBC驱动程序访问MySQL
,则metastore
不需要上述HiveServer2
服务。但是,如果HiveServer2
通过metastore
协议访问thrift
,则按照conf/hive-site.xml
中的配置,例如<property> <name>hive.metastore.uris</name> <value>thrift://hadoop-master:9083</value> <description> Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore. </description> </property>
然后,必须首先启动
metastore
服务。
答案 1 :(得分:0)
我很难设置 hive-3.1.2
。我写这个也许它可以帮助某人。为了诊断问题,首先尝试像这样启动 metastore
和 hiveserver2
:
元存储:
hive --service metastore --hiveconf hive.root.logger=INFO,console
hiveserver2:
hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.root.logger=INFO,console
然后仔细阅读抛出的异常。
我的问题是 user hive is not allowed to perform this api call
为了解决这个问题,我向 hive-site.xml
添加了以下属性:
<property>
<name>metastore.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
我还添加了完整的 hive-site.xml
作为示例:
<configuration>
<property>
<name>datanucleus.schema.autoCreateTables</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://server-2:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>mysql_username</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql_password</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://server-2:9083</value>
</property>
<property>
<name>atanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>server-2</value>
</property>
<property>
<name>hive.server2.transport.mode</name>
<value>binary</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>metastore.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
答案 2 :(得分:0)
谢谢。有错别字。它应该 hive.metastore 不是如下所示。
**metastore**.metastore.event.db.notification.api.auth 错误的