'hiveserver2未在端口10000和10001上侦听'

时间:2019-01-15 10:23:28

标签: hive

当我跑步时:

hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000 --hiveconf hive.root.logger=INFO,console

它显示

  

启动HiveServer2

没有任何内容监听端口10000和10001

3 个答案:

答案 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通过metastoreDerby 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。我写这个也许它可以帮助某人。为了诊断问题,首先尝试像这样启动 metastorehiveserver2

元存储:

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 错误的