HiveServer配置了HA特性,利用zookeeper做dynamic.service.discovery
访问方式如下:
!connect jdbc:hive2://emr-header-1:2181,emr-header-2:2181,emr-header-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@EMR.${clusterId}.COM
或者直连其中某一台HiveServer(emr-header-1/2):
!connect jdbc:hive2://emr-header-1:10000/;principal=hive/emr-header-1@EMR.${clusterId}.COM
或
!connect jdbc:hive2://emr-header-2:10000/;principal=hive/emr-header-2@EMR.${clusterId}.COM
非HA集群,HiveServer启动在emr-header-1上面:
!connect jdbc:hive2://emr-header-1:10000/;principal=hive/emr-header-1@EMR.${clusterId}.COM
备注:
上述${clusterId}可以登录emr-header-1执行hostname命令获取其中数字
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
您提到的配置和访问方式涉及到了Apache Hive在阿里云E-MapReduce(EMR)集群上的高可用(HA)部署,以及如何通过JDBC连接到HiveServer2。下面我将为您解析这些配置项的意义,并提供一些操作建议。
使用ZooKeeper进行动态服务发现:
连接字符串示例: jdbc:hive2://emr-header-1:2181,emr-header-2:2181,emr-header-3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@EMR.${clusterId}.COM
解释:
emr-header-1:2181,emr-header-2:2181,emr-header-3:2181
: 指定ZooKeeper的地址列表,用于服务发现。serviceDiscoveryMode=zooKeeper
: 表明使用ZooKeeper来发现可用的HiveServer2实例。zooKeeperNamespace=hiveserver2
: 在ZooKeeper中用于跟踪HiveServer2实例状态的命名空间。principal=hive/_HOST@EMR.${clusterId}.COM
: Kerberos安全认证中的主体名称,其中_HOST
会被实际主机名替换,${clusterId}
需要根据实际情况替换为集群ID。直连单个HiveServer2实例:
示例: jdbc:hive2://emr-header-1:10000/;principal=hive/emr-header-1@EMR.${clusterId}.COM
解释:
jdbc:hive2://emr-header-1:10000/;principal=hive/emr-header-1@EMR.${clusterId}.COM
${clusterId}获取:
emr-header-1
执行hostname
命令并提取数字部分来获取clusterId
。实际上,在阿里云E-MapReduce环境中,更推荐使用环境变量或者EMR提供的API、CLI工具来获取集群信息,以确保准确性与安全性。Kerberos安全认证:
网络与防火墙设置:
综上所述,基于阿里云E-MapReduce服务,您可以灵活选择是否启用HiveServer2的高可用配置,并通过相应的JDBC连接参数实现对Hive的访问。记得根据实际的集群配置和安全要求调整连接字符串中的细节。