beeline無密碼連接hiveserver2


1、說明

#hiveserver2增加了權限控制,需要在hadoop的配置文件中配置

core-site.xml 增加以下內容:
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>

#然后要重啟hadoop

 

2、啟動hiveserver2

#后台啟動,我這里對hive加了環境變量
[root@node1 ~]#nohup hiveserver2 >>/opt/hive-2.1.1/hiveserver2.log &

 

3、查看

[root@node1 ~]# netstat -ntlp |grep 10000
tcp        0      0 0.0.0.0:10000           0.0.0.0:*               LISTEN      5144/java

#10002端口是hiveserver2的一個web端口,可以用瀏覽器打開:ip:10002 [root@node1
~]# netstat -ntlp |grep 10002 tcp 0 0 0.0.0.0:10002 0.0.0.0:* LISTEN 5144/java

 

4、使用beeline連接

[root@node1 ~]# beeline 
Beeline version 2.1.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000/default;     #連接default庫
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive-2.1.1/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/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]
Connecting to jdbc:hive2://localhost:10000/default;
Enter username for jdbc:hive2://localhost:10000/default;:     #直接回車
Enter password for jdbc:hive2://localhost:10000/default;:     #直接回車
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
19/12/11 10:54:49 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000/default> show tables;
+-----------+--+
| tab_name  |
+-----------+--+
+-----------+--+
No rows selected (1.408 seconds)
0: jdbc:hive2://localhost:10000/default> !exit    #退出
Closing: 0: jdbc:hive2://localhost:10000/default;

 

5、可能的問題

有可能用beeline連接數據庫時,會報錯:AccessControlException: Permission denied: user=anonymous, access=EXECUTE, inode="/tmp/hive":root:supergroup:d-wx-w
類似於以上錯誤;可以對hdfs上的/tmp目錄加權:
[root@node1 ~]# hdfs dfs -chmod -R 777 /tmp
 
         
我這里是自己的測試集群用的root用戶,生產環境應該是普通用戶,而且應該謹慎操作;


當執行sql語句時,如果報以下錯誤:
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. 
User: root is not allowed to impersonate anonymous (state=08S01,code=1)

可以先kill掉hiveserver2,在hive-site.xml加入以下內容:

<property>
     <name>hive.server2.authentication</name>
     <value>NONE</value>
</property>

<property>
   <name>dfs.permissions.enabled</name>
   <value>false</value>
</property>

<property>
     <name>hive.server2.enable.doAs</name>
     <value>FALSE</value>
</property>

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM