环境准备:
现有hadoop集群信息如下:
node1 node2 node3 IP 10.90.100.101
10.90.100.102
10.90.100.103
HDFS NameNode
、DataNode
DataNode
DataNode
、SecondaryNameNode
YARN NodeManager
Resourcemanager
、NodeManager
NodeManager
jdk版本:1.8.0_202
Hive是依赖于Hadoop集群的,因此在安装Hive之前,需要保证已经搭建好Hadoop集群环境。
本文以
hive 3.1.3
为例,下载地址:官 方:https://dlcdn.apache.org/hive/
国内镜像:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
更多版本:https://archive.apache.org/dist/hive/
1. Hive的安装模式
Hive有3种安装模式,分别对应不同的应用场景。
hive元数据介绍
Metadata:
Metadata即元数据,元数据包含用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。元数据存储在关系型数据库中。如hive内置的Derby、或者第三方如MySQL等。
Metastore:
Metastore即元数据服务。Metastore服务的作用是管理metadata元数据,对外暴露服务地址,让各种客户端通过连接metastore服务,由metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。
metastore三种配置方式:
metastore服务配置有3种模式:内嵌模式、本地模式、远程模式。
内嵌模式 本地模式 远程模式 Metastore单独配置、启动 否 否 是 Metadata存储介质 Derby MySQL MySQL
1.1 内嵌模式
- 内嵌模式(Embedded Metastore)是metastore默认部署模式。此种模式下,元数据存储在内置的Derby数据库,并且Derby数据库和metastore服务都嵌入在主HiveServer进程中,当启动HiveServer进程时,Derby和metastore都会启动。 不需要额外起Metastore服务。 但是一次只能支持一个活动用户,适用于测试体验,不适用于生产环境。
- 缺点:不同路径启动hive,每一个hive拥有一套自己的元数据,无法共享。
1.2 本地模式
-
本地模式(Local Metastore)下,Hive Metastore服务与主HiveServer进程在同一进程中运行,但是存储元数据的数据库在单独的进程中运行,并且可以在单独的主机上。metastore服务将通过JDBC与metastore数据库进行通信。 本地模式采用外部数据库来存储元数据,推荐使用MySQL。 hive根据hive.metastore.uris 参数值来判断,如果为空,则为本地模式。
-
缺点:每启动一次hive服务,都内置启动了一个metastore。
1.3 远程模式
远程模式下,需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程模式的metastore服务和hive运行在不同的进程里。
在生产环境中,建议用远程模式来配置Hive Metastore。
在这种模式下,其他依赖Hive的软件都可以通过Metastore访问Hive。此时需要配置 hive.metastore.uris 参数来指定 metastore 服务运行的机器ip和端口,并且需要单独手动启动metastore服务。metastore服务可以配置多个节点上,避免单节点故障导致整个集群的hive client不可用。同时hive client配置多个metastore地址,会自动选择可用节点
2. 嵌入模式的安装部署
略
3. 本地模式的安装部署
本地模式需要采用 MySQL 数据库存储数据。MySQL 的安装方法这里不再介绍,请参考相关文档。本地模式还需要下载 MySQL 的 JDBC 驱动,且驱动的版本须是 5.1.43 以上,可在 MySQL官方下载。本文以MySQL8.4.2为例,采用的 MySQL 驱动文件名是 mysql-connector-j-8.4.2.jar
。
提示
Hive对元数据存储的MySQL数据库版本没有严格要求,只需要对应mysql驱动文件匹配即可。本文以MySQL8.4.2为例。
OpenEuler24.03安装MySQL8.4.2安装教程
jar包下载到Maven仓库下载:https://mvnrepository.com/
- 上传或下载hive安装包
[hadoop@node1 ~]$ ls
apache-hive-3.1.3-bin.tar.gz
#可以看到hive已经下载完成
也可以把安装包上传到集群的namenode节点
- 解压 Hive压缩包到
/opt/software
目录
[hadoop@node1 ~]$ tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/software
[hadoop@node1 ~]$ ls /opt/software/
apache-hive-3.1.3-bin
- 创建一个软链接以方便使用
[hadoop@node1 ~]$ cd /opt/software/
[hadoop@node1 software]$ ln -s /opt/software/apache-hive-3.1.3-bin/ hive
- 设置环境变量
[hadoop@node1 software]$ sudo vim /etc/profile
在打开的文件末尾增加如下的内容。
export HIVE_HOME=/opt/software/hive
export PATH=$HIVE_HOME/bin:$PATH
使环境变量生效
[hadoop@node1 software]$ source /etc/profile
- 在已经安装好的MySQL创建存放元数据的数据库
mysql> CREATE DATABASE hive_metadata; #这里以名称为hive_metadata的数据库为例
# 查看是否创建成功
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| hive_metadata |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
#成功了就退出
mysql> exit;
6.创建并编辑配置文件
在/opt/software/hive/conf
目录下新建hive-site.xml
文件:
[hadoop@node1 software]$ vim /opt/software/hive/conf/hive-site.xml
hive-site.xml
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL,IP地址给为MySQL数据库所在节点的IP,这里以IP是10.90.100.103为例 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.90.100.103:3306/hive_metadata?useSSL=FALSE&allowPublicKeyRetrieval=TRUE</value>
</property>
<!--注意:在hive的jdbc连接中, 符号 & 要写成 & 才不会报错-->
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Root@123456</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
7.将 MySQL 驱动文件复制到 Hive 安装目录的 lib 下
[hadoop@node1 ~]$ ls
mysql-connector-j-8.4.0.jar
[hadoop@node1 ~]$ cp mysql-connector-j-8.4.0.jar /opt/software/hive/lib/
8.初始化 MySQL
如果是首次安装,需要执行初始化命令schematool -dbType mysql -initSchema
。
[hadoop@node1 ~]$ schematool -dbType mysql -initSchema
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/software/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/software/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.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.slf4j.impl.Reload4jLoggerFactory]
2025-03-17 18:07:22,482 INFO [main] conf.HiveConf (HiveConf.java:findConfigFile(187)) - Found configuration file file:/opt/software/apache-hive-3.1.3-bin/conf/hive-site.xml
2025-03-17 18:07:22,681 INFO [main] tools.HiveSchemaHelper (HiveSchemaHelper.java:logAndPrintToStdout(117)) - Metastore connection URL: jdbc:mysql://10.90.100.103:3306/hive_metadata?useSSL=FALSE&allowPublicKeyRetrieval=TRUE
Metastore connection URL: jdbc:mysql://10.90.100.103:3306/hive_metadata?useSSL=FALSE&allowPublicKeyRetrieval=TRUE
2025-03-17 18:07:22,681 INFO [main] tools.HiveSchemaHelper (HiveSchemaHelper.java:logAndPrintToStdout(117)) - Metastore Connection Driver : com.mysql.cj.jdbc.Driver
Metastore Connection Driver : com.mysql.cj.jdbc.Driver
2025-03-17 18:07:22,681 INFO [main] tools.HiveSchemaHelper (HiveSchemaHelper.java:logAndPrintToStdout(117)) - Metastore connection User: root
Metastore connection User: root
Starting metastore schema initialization to 3.1.0
Initialization script hive-schema-3.1.0.mysql.sql
Initialization script completed
schemaTool completed
[hadoop@node1 ~]$
9.启动 Hive
确保 Hadoop 已经启动,然后运行下面的命令。
[hadoop@node1 ~]$ hive
which: no hbase in (/opt/module/mysql/bin:/opt/module/hive/bin:/opt/module/hadoop/jdk/bin:/opt/module/hive/bin:/opt/module/hadoop/jdk/bin:/opt/module/hadoop/jdk/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/hadoop/hadoop/bin:/opt/module/hadoop/hadoop/sbin:/home/hadoop/.local/bin:/home/hadoop/bin:/opt/module/hadoop/hadoop/bin:/opt/module/hadoop/hadoop/sbin:/opt/module/hadoop/hadoop/bin:/opt/module/hadoop/hadoop/sbin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.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]
Hive Session ID = 8ffba7ea-34e3-4dfd-87e7-ab873fed89d4
Logging initialized using configuration in jar:file:/opt/module/apache-hive-3.1.3-bin/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = fa56cbac-8bdf-4be2-91aa-3e287189c644
hive>
提示:
如果如下的报错,说明当前的hive版本高于jdk1.8,将jdk版本降到jdk1.8即可解决
Exception in thread "main" java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to cla ss java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and java.net.URLClassLoader are in module java.base of l oader 'bootstrap')
至此,hive本地模式已经安装完成。
hive建表验证
hive> show databases;
hive> show tables;
hive> create table stu(id int, name string);
hive> insert into stu values(1,"ss");
hive> select * from stu;
# 开启另一个窗口开启Hive(两个窗口都可以操作Hive,没有出现异常)
hive> show databases;
hive> show tables;
hive> select * from stu;
至此,Hive的本地模式部署就已经完成。
4. 远程模式的安装部署
Hive的metastore
服务的作用是为Hive CLI
或者Hiveserver2
提供元数据访问接口
回顾本地模式:
该模式存在以下两个问题:
①嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。
②每个客户端都需要用户元数据库的读写权限,元数据库的安全得不到很好的保证。
生产环境中,推荐使用远程模式。
部署远程模式配置:
1.首先,保证metastore服务
的配置文件hive-site.xml
中包含连接元数据库所需的以下参数
<!-- jdbc连接的URL,IP地址给为MySQL数据库所在节点的IP,这里以IP是10.90.100.103为例 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://10.90.100.103:3306/hive_metadata?useSSL=FALSE&allowPublicKeyRetrieval=TRUE</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
2.其次,保证Hiveserver2和每个Hive CLI
的配置文件hive-site.xml
中包含访问metastore服务地址:
<!-- 指定metastore服务的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
注意:主机名需要改为metastore服务所在节点,端口号无需修改,metastore服务的默认端口就是9083
3.远程模式(独立服务模式)测试
① 将hive拷贝到node2
[hadoop@node1 ~]$ cd /opt/software/
[hadoop@node1 software]$ rsync -avz /opt/software/hive /opt/software/apache-hive-3.1.3-bin node2:/opt/software/
② 在node1上启动metastore
#为了前台方便操作,把启动的metastore进程放到后台运行
[hadoop@node1 software]$ nohup hive --service metastore &
[1] 30478
[hadoop@node1 software]$ nohup: 忽略输入并把输出追加到 'nohup.out'
③ 查看启动情况
[hadoop@node1 software]$ jps -lm
2210 org.apache.hadoop.hdfs.server.datanode.DataNode
30628 sun.tools.jps.Jps -lm
1993 org.apache.hadoop.hdfs.server.namenode.NameNode
2668 org.apache.hadoop.yarn.server.nodemanager.NodeManager
30478 org.apache.hadoop.util.RunJar /opt/software/hive/lib/hive-metastore-3.1.3.jar org.apache.hadoop.hive.metastore.HiveMetaSt
通过输出结果,可以看到HiveMetaStore进程已经启动
④ 修改node2
上hive-site.xml
文件,删除服务端相关代码,添加访问metastore服务地址
[hadoop@node2 ~]$ cd /opt/software/
[hadoop@node2 software]$ cd hive/conf/
[hadoop@node2 conf]$ vim hive-site.xml
node2的hive-site.xml最终的内容如下:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node2</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!-- 指定metastore服务的地址 **( 关键配置 ) **-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
</configuration>
⑤ node2启动hive
[hadoop@node2 conf]$ cd /opt/software/hive
[hadoop@node2 software]$ bin/hive
which: no hbase in (/home/hadoop/bin:/opt/software/kafka/bin:/opt/software/zookeeper/bin:/opt/software/jdk/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/software/hadoop/bin:/opt/software/hadoop/sbin:/opt/software/flink-1.19.2/bin)
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/software/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/software/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.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]
Hive Session ID = c42d8f31-25c1-4508-aac3-3f33bc3ce75a
Logging initialized using configuration in jar:file:/opt/software/apache-hive-3.1.3-bin/lib/hive-common-3.1.3.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
Hive Session ID = ec261935-a86e-493a-92f1-41bd5757ec17
hive> show tables;
OK
stu
Time taken: 0.359 seconds, Fetched: 1 row(s)
hive>
当关闭node1服务之后,node2就不能查询到数据库,因为设置了连接服务地址
至此,Hive的远程模式部署就已经完成。
5. hiveserver2服务 远程访问服务(选做)
基础的数据操作可以通过脚本方式由Hive客户端进行处理。若要开发应用程序,则需要使用Hive的JDBC驱动进行连接。Hive内置了HiveServer和HiveServer2服务器,两者都允许客户端使用多种编程语言进行连接,但是HiveServer不能处理多个客户端的并发请求,所以产生了HiveServer2。HiveServer2允许远程客户端使用各种编程语言向Hive提交请求并检索结果,支持多客户端并发访问和身份验证。HiveServer2拥有自己的CLI(Beeline)。Beeline是一个基于SQLLine的JDBC客户端。由于HiveServer2是Hive开发维护的重点,所以推荐使用Beeline。
HiveServer2拥有自己的CLI(Beeline)。Beeline是一个基于SQLLine的JDBC客户端。由于HiveServer2是Hive开发维护的重点,所以推荐使用Beeline。
Hive提供jdbc接口,为用户提供远程访问Hive数据的功能,例如用户期望在个人电脑中访问远程服务中的Hive数据,就需要用到Hiveserver2
访问hadoop集群身份说明
在远程访问Hive数据时,客户端并未直接访问Hadoop集群,而是由Hivesever2代理访问。由于Hadoop集群中的数据具备访问权限控制,所以此时需考虑一个问题:那就是访问Hadoop集群的用户身份是谁?是Hiveserver2的启动用户?还是客户端的登录用户?
答案是都有可能,具体是谁,由Hiveserver2的hive.server2.enable.doAs参数决定(默认开启),该参数的含义是是否启用Hiveserver2用户模拟的功能。若启用,则Hiveserver2会模拟成客户端的登录用户去访问Hadoop集群的数据,不启用,则Hivesever2会直接使用启动用户访问Hadoop集群数据。模拟用户的功能,默认是开启的
生产环境,推荐开启用户模拟功能,因为开启后才能保证各用户之间的权限隔离
hiveserver2部署:hivesever2的模拟用户功能,依赖于Hadoop提供的proxy user(代理用户功能),只有Hadoop中的代理用户才能模拟其他用户的身份访问Hadoop集群。因此,需要将hiveserver2的启动用户设置为Hadoop的代理用户,配置方式如下:
① 在namenode所在的节点中/opt/software/hadoop/etc/hadoop/core-site.xml
(根据自己的实际路径)
<!--配置所有节点的hadoop用户都可作为代理用户-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<!--配置hadoop用户能够代理的用户组为任意组-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
<!--配置hadoop用户能够代理的用户为任意用户-->
<property>
<name>hadoop.proxyuser.hadoop.users</name>
<value>*</value>
</property>
分发core-site.xml
文件xsync core-site.xml
并重启集群
如果该步骤在此之前已经配好了可以忽略
② Hive端配置:hive-site.xml
文件中添加如下配置信息
<!-- 指定hiveserver2连接的host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node1</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
③ 启动hiveserver2:
[hadoop@node1 ~]$ hive --service hiveserver2
或直接使用
hiveserver2
命令启动。[hadoop@node1 ~]$ hiveserver2
实际生产环境这样启动,退到后台运行
[hadoop@node1 ~]$ nohup bin/hiveserver2 1>/dev/null 2>/dev/null &
再多打开一个终端查看当前这个节点的进程就可以看到多出了RunJar
进程
[hadoop@node1 ~]$ jps
3968 NameNode
4418 NodeManager
4818 Jps
4676 RunJar
4571 JobHistoryServer
4094 DataNode
[hadoop@node1 ~]$
④ 使用客户端连接
方式一:使用第三方图形化客户端远程访问
方式二:使用命令行客户端beeline进行远程访问
# 启动
beeline -u jdbc:hive2://10.90.100.101:10000 -n hadoop
# 连接上hive
!connect jdbc:hive2://10.90.100.101:10000
# 退出
!quit
示例:
[hadoop@node1 ~]$ beeline -u jdbc:hive2://10.90.100.101:10000 -n hadoop
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/module/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/module/hadoop/hadoop-3.3.4/share/hadoop/common/lib/slf4j-reload4j-1.7.36.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://10.90.100.101:10000
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.3 by Apache Hive
0: jdbc:hive2://10.90.100.101:10000> !connect jdbc:hive2://10.90.100.101:10000
Connecting to jdbc:hive2://10.90.100.101:10000
Enter username for jdbc:hive2://10.90.100.101:10000: hadoop
Enter password for jdbc:hive2://10.90.100.101:10000: ******
Connected to: Apache Hive (version 3.1.3)
Driver: Hive JDBC (version 3.1.3)
Transaction isolation: TRANSACTION_REPEATABLE_READ
1: jdbc:hive2://10.90.100.101:10000> show databases;
INFO : Compiling command(queryId=hadoop_20240320014037_ba83d58d-4ec7-4461-9144-eb9ff0fdeaaf): show databases
INFO : Concurrency mode is disabled, not creating a lock manager
INFO : Semantic Analysis Completed (retrial = false)
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:database_name, type:string, comment:from deserializer)], properties:null)
INFO : Completed compiling command(queryId=hadoop_20240320014037_ba83d58d-4ec7-4461-9144-eb9ff0fdeaaf); Time taken: 0.079 seconds
INFO : Concurrency mode is disabled, not creating a lock manager
INFO : Executing command(queryId=hadoop_20240320014037_ba83d58d-4ec7-4461-9144-eb9ff0fdeaaf): show databases
INFO : Starting task [Stage-0:DDL] in serial mode
INFO : Completed executing command(queryId=hadoop_20240320014037_ba83d58d-4ec7-4461-9144-eb9ff0fdeaaf); Time taken: 0.123 seconds
INFO : OK
INFO : Concurrency mode is disabled, not creating a lock manager
+----------------+
| database_name |
+----------------+
| default |
+----------------+
1 row selected (0.981 seconds)
1: jdbc:hive2://10.90.100.101:10000> !quit
Closing: 1: jdbc:hive2://10.90.100.101:10000
Closing: 0: jdbc:hive2://10.90.100.101:10000