当前位置:   article > 正文

Java访问Hive的几种JDBC URL格式

Java访问Hive的几种JDBC URL格式

Java访问Hive的几种JDBC URL格式

1.相关参数的默认值
1)hive 服务默认端口是 10000
2)zookeeper server默认端口是 2181
3)hive 的默认数据库是 default

2.几种方式访问hive的JDBC URL区别:

1)HiveServer2 单点访问 JDBC URL

格式:
jdbc:hive2://<hiveserver2_host:hiveserver2_port>/<dbName>

说明:
i)地址和端口为HiveServer2服务的地址及端口;
hive-site.xml 配置文件中的端口配置:
<property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
</property>
如果配置文件中没有配置 hive.server2.thrift.port 或者配置的值不是 10000 则表示 Hive 没有开放 10000 端口。

ii)dbName 是Hive数据库,默认为default;


示例:
#访问节点1的HiveServer2服务地址和端口:
jdbc:hive2://192.168.100.145:10000/frankdb
#访问节点3的HiverServer2服务地址和端口:
jdbc:hive2://192.168.100.147:10000/frankdb


2)HiveServer2 HA(zookeeper)访问 JDBC URL

格式:
jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=<namespace>

说明:
i)从Hive 0.14开始,Hive使用Zookeeper实现了HiveServer2的HA功能(ZooKeeper Service Discovery)。Client端可以通过指定一个namespace(hive-site.xml中配置的hive.server2.zookeeper.namespace)来连接HiveServer2,而不是指定某一个节点的host和port。
hive-site.xml 配置文件中的相关配置:
<property>
    <name>hive.server2.support.dynamic.service.discovery</name>
    <value>true</value>
</property>
<property>
    <name>hive.server2.zookeeper.namespace</name>
    <value>hiveserver2</value>
</property>
<property>
    <name>hive.zookeeper.quorum</name>
    <value>hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181</value>
    <!-- <value>hdp01:2181,hdp02:2181,hdp03:2181</value> -->
</property>
<property>
    <name>hive.zookeeper.client.port</name>
    <value>2181</value>
</property>

ii)
zookeeper quorum 是 hive-site.xml 配置文件中 Zookeeper 的 Quorum 节点列表,以三节点为例格式为:zk_host01:zk_port,zk_host02:zk_port,zk_host03:zk_port
dbName 是Hive数据库,默认为default
serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
namespace 是ZK中的namespace,即参数 hive.server2.zookeeper.namespace 所定义的值

示例:
jdbc:hive2://hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

jdbc:hive2://node01:2181,node02:2181,node03:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2


3)HiveServer2 单点访问 + 带Kerberos认证 JDBC URL

格式:
jdbc:hive2://<hiveserver2_host:hiveserver2_port>/<dbName>;principal=<principalName>[;auth=KERBEROS]

说明:
i)auth=KERBEROS 指定KERBEROS方式,可以不带、通常是通过配置的方式隐式启用的,也可以显式指定auth=KERBEROS
ii)hive 的 principal 在 hive-site.xml 配置文件中获取(JDBC URL中需要将"_HOST"替换成本机的域名):
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>frank/_HOST@HADOOP.COM</value>
</property>


示例:
#访问节点1的HiveServer2服务地址和端口:
jdbc:hive2://192.168.100.145:10000/frankdb;principal=frank/hdp01.hadoop.com@HADOOP.COM
#访问节点3的HiverServer2服务地址和端口:
jdbc:hive2://192.168.100.147:10000/frankdb;principal=frank/hdp01.hadoop.com@HADOOP.COM;auth=KERBEROS

4)HiveServer2 HA(zookeeper)访问 + 带Kerberos认证 JDBC URL

格式:
jdbc:hive2://<zookeeper quorum>/<dbName>;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=<namespace>[;auth=KERBEROS][;sasl.qop=auth-conf];principal=<principalName>

说明:
i)hive 的 principal 在 hive-site.xml 配置文件中获取(JDBC URL中"_HOST"不能替换、不能写固定节点的域名,因为他会去 zookeeper 上找,可能访问不同节点的 hiveserver2):
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>frank/_HOST@HADOOP.COM</value>
</property>

ii)
zookeeper quorum 是 hive-site.xml 配置文件中 Zookeeper 的 Quorum 节点列表,以三节点为例格式为:zk_host01:zk_port,zk_host02:zk_port,zk_host03:zk_port
dbName 是Hive数据库,默认为default
serviceDiscoveryMode=zooKeeper 指定模式为zooKeeper
namespace 是ZK中的namespace,即参数 hive.server2.zookeeper.namespace 所定义的值
auth=KERBEROS 指定KERBEROS方式,可以不带、通常是通过配置的方式隐式启用的,也可以显式指定auth=KERBEROS
sasl.qop=auth-conf 是SASL QoP级别,SASL QoP 可配置的具体值如下(适用于 hadoop.rpc.protection/dfs.data.transfer.protection):
  authentication : authentication only;
  integrity : integrity check in addition to authentication;
  privacy : data encryption in addition to integrity.
  分别对应:auth,auth-int 和 auth-conf。


示例:
jdbc:hive2://hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=frank/_HOST@HADOOP.COM

jdbc:hive2://hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;auth=KERBEROS;principal=frank/_HOST@HADOOP.COM

jdbc:hive2://hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;auth=KERBEROS;sasl.qop=auth-conf;principal=frank/_HOST@HADOOP.COM


3.HiverServer2 HA 

JDBC Client1 --------> HiveServer2(host1:port1) <-----
            ^                                          ^                           |
            |                                           |                            |
            |host1:port1                         |                            |
            |                                          V                           V
             --->       
                                            ZooKeeper                    Hadoop
            |--->                                  
            |                                         ^                              ^
            |host3:port3                       |                               |
            |                                         |                               |
           V                                        V                              |
JDBC Client2 -------> HiveServer2(host3:port3) <-------


HiveServer2 HA 高可用:三节点(hdp01, hdp02, hdp03)安装 Hadoop,分别在 hdp01 和 hdp03 两个节点上启用 HiverServer2 实例,并通过 ZooKeeper 完成 HA 配置。
JDBC Client1 和 Clien2 以 jdbc:hive2://hdp01.hadoop.com:2181,hdp02.hadoop.com:2181,hdp03.hadoop.com:2181/frankdb;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=frank/_HOST@HADOOP.COM
访问 ZooKeeper 时,会分别路由到 host1 和 host3 上。
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/942405
推荐阅读
相关标签
  

闽ICP备14008679号