hive 的另外一種啟動方式是 hiveserver2,它是提供了一種服務,使得我們可以遠程操作 hive,就像操作 mysql 一樣
hiveserver1
既然有 hiveserver2,肯定有 hiveserver1,不過已經被淘汰,不多做解釋,hiveserver1 的缺點是不支持並發,hiveserver2 支持
How to Configure
Configuration Properties in the hive-site.xml
File
hive.server2.thrift.min.worker.threads – Minimum number of worker threads, default 5. hive.server2.thrift.max.worker.threads – Maximum number of worker threads, default 500. hive.server2.thrift.port – TCP port number to listen on, default 10000. hive.server2.thrift.bind.host – TCP interface to bind to.
很容易理解,注意他們都有默認值,也就是不是必須配置
How to Start
$HIVE_HOME/bin/hiveserver2
or
$HIVE_HOME/bin/hive --service hiveserver2
參數查看
$HIVE_HOME/bin/hive --service hiveserver2 -H Starting HiveServer2 usage: hiveserver2 -H,--help Print help information --hiveconf <property=value> Use value for given property
Web UI for HiveServer2
端口為 10002
Beeline – Command Line Shell
hiveserver2 提供了遠程操作 hive 的服務,他的客戶端有兩種,一種是 java、python 等編程語言,一種是本地 shell,這里只介紹 shell,編程語言會專門寫一篇博客
[root@hadoop10 bin]# beeline 啟動命令 Beeline version 2.3.6 by Apache Hive beeline> !connect jdbc:hive2://hadoop10:10000 # 啟動后輸入該命令 Connecting to jdbc:hive2://hadoop10:10000 Enter username for jdbc:hive2://hadoop10:10000: postgres Enter password for jdbc:hive2://hadoop10:10000: ******** Connected to: Apache Hive (version 2.3.6) Driver: Hive JDBC (version 2.3.6) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://hadoop10:10000> show databases; +----------------+ | database_name | +----------------+ | default | | hive1 | | hive1101 | +----------------+ 3 rows selected (1.724 seconds)
1. 啟動 shell 的命令是 beeline,她也是在 hive 的 bin 目錄下;
2. 啟動后輸入命令
!connect jdbc:hive2://hadoop10:10000 【加粗的是固定的,hive2 代表數據庫類型】
// 也可以在連接時指定數據庫 !connect jdbc:hive2://hadoop10:10000/hive1101 【hive1101 是數據庫名】
// 還可以指定用戶名和密碼 !connect jdbc:hive2://localhost:10000 user password
3. 輸入用戶名、密碼
// 如果沒有專門配置用戶名和密碼,他們分別是 關系型數據庫,也就是存放元數據的數據庫的 用戶名和密碼
// 也可以配置用戶名和密碼,配置方法是在 hive 的 hive-site.xml 中加入
<property> <name>beeline.hs2.connection.user</name> <value>hive</value> </property> <property> <name>beeline.hs2.connection.password</name> <value>hive</value> </property>
異常記錄
Error: Could not open client transport with JDBC Uri: jdbc:hive2://192.168.10.10:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.ap ache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate hive (state=08S01,code=0)
解決方法
在 hadoop 的 core-site.xml 末尾加上
<property> <name>hadoop.proxyuser.root.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.root.groups</name> <value>*</value> </property>
注意集群中每個節點都要加
以上都是簡單用法,詳情參考 官網
參考資料:
https://cwiki.apache.org/confluence/display/Hive/Setting+Up+HiveServer2 HiveServer2 官網
https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients?searchId=AQ9UBBKHW HiveServer2 Clients官網
https://blog.csdn.net/u011495642/article/details/84305944 異常解決
https://blog.csdn.net/zhanglh046/article/details/78572926