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