开发者社区 问答 正文

beeline如何访问Kerberos的HiveServer

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命令获取其中数字

展开
收起
寒沙牧 2018-11-21 17:20:41 6263 分享 版权
阿里云 AI 助理回答

您提到的配置和访问方式涉及到了Apache Hive在阿里云E-MapReduce(EMR)集群上的高可用(HA)部署,以及如何通过JDBC连接到HiveServer2。下面我将为您解析这些配置项的意义,并提供一些操作建议。

HiveServer2 HA配置

  1. 使用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。
  2. 直连单个HiveServer2实例:

    • 示例: jdbc:hive2://emr-header-1:10000/;principal=hive/emr-header-1@EMR.${clusterId}.COM

    • 解释:

      • 直接指定到某个HiveServer2实例的连接,不利用HA特性。适合非HA场景或明确知道要连接的服务器。

非HA集群配置

  • 对于非HA集群,只需直接连接到HiveServer2运行的节点,如: 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安全认证:

    • 确保您的客户端已正确配置Kerberos,包括KDC地址、keytab文件等,以便成功通过身份验证。
  • 网络与防火墙设置:

    • 确认从客户端到HiveServer2及ZooKeeper的网络路径畅通,没有被防火墙规则阻断。

综上所述,基于阿里云E-MapReduce服务,您可以灵活选择是否启用HiveServer2的高可用配置,并通过相应的JDBC连接参数实现对Hive的访问。记得根据实际的集群配置和安全要求调整连接字符串中的细节。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答