启动hive时连接不到10000端口可能遇见的问题

第一个问题 
报错内容如下:

1.org.apache.hadoop.ipc.RemoteException: User: root is not allowed to impersonate root
这点就比较恶心了,一般来说,可能只是在hadoop中配置的代理用户不一样,
如hadoop is not allowed to impersonate root 或者 root is not allowed to impersonate hive 啥的,
但是根据网络上调整后尝试的方法,即对应value上面调整为hadoop 和localhost,没有作用。 
我本人的设置为: 
这里第三个字段我是root,因为试验环境,我全部用的root,避免权限问题。你可以根据自己的来设置。

     
        hadoop.proxyuser.root.hosts
        *
     

     
        hadoop.proxyuser.root.groups
        *
     
 
第二个问题 
报错内容如下:

beeline> !connect jdbc:hive2://114.215.xxx.xxx:10000/default
Connecting to jdbc:hive2://114.215.xxx.xxx:10000/default
Enter username for jdbc:hive2://114.215.xxx.xxx:10000/default: root
Enter password for jdbc:hive2://114.215.xxx.xxx:10000/default: ************
16/12/05 14:25:23 [main]: WARN jdbc.HiveConnection: Failed to connect to 114.215.xxx.xxx:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://114.215.xxx.xxx:10000/default: java.net.ConnectException: Connection refused (state=08S01,code=0)

这里链接拒绝,说明以下几个问题 
第一个,至少你连接是成功的,不然不会出现让你验证username和password的问题。 
第二个,你的链接有问题。有可能是你现在连接的并不是hive2,而是启动的服务hiveserver。这个和hiveserver2有很大的版本区别,具体可以百度。 
第三个,当链接的是hive2,但是还是拒绝的时候,可能问题出在你配置上面,如下:

 
    hive.server2.transport.mode
    binary
   
      Expects one of [binary, http].
      Transport mode of HiveServer2.
   

 

  
切记,当你这里设置为http的时候,此时服务器只提供端口10001的服务,即HTTP方式访问。 
这时候10000端口是不开启的! 
本人就是在这个地方卡了好几天。因此你要用java通过jdbc访问,一定要选择binary。

第三个问题 
报错内容如下:

[root@master ~]# Starting Hive Metastore Server
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hive/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.

这里表示你可能存在两个问题: 
其一,9083端口的metastore服务已经在使用中,你要停止,可以通过查询PID然后kill来进行重新启动。(如果你选择的是后台启动的话hive –service metastore &) 
其二,你的设置文件中hive-site.xml中,注意metastore的设置。 
我这里给出我一部分的设置,其他的你可以百度自己查询。

 
    hive.metastore.local
    false
    controls whether to connect to remote metastore server or open a new metastore server in Hive Client JVM
 

 
    hive.metastore.uris
    thrift://114.215.xxx.xxx:9083
    Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
 

  
另外,几个默认配置为0.0.0.0的地方不要轻易改动。除非你明确的知道修改的目的,否则请默认设置。

 
    hive.hwi.listen.host
    0.0.0.0
    This is the host address the Hive Web Interface will listen on
 

 
    hive.server2.webui.host
    0.0.0.0
    The host address the HiveServer2 WebUI will listen on
 

  
1尤其是hive.server2.webui.host 不要随意改动。

如果遇到上述三个问题之外,还是无法链接上10000端口的话,记得用以下步骤。

一,先开启 metastore

hive --service metastore &

二,先开启 hiveserver2

 hive --service hiveserver2 &

三,可以通过命令netstat -ntulp |grep 10000 
可以看到结果 
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN 27799/java
 

你可能感兴趣的:(hive)