DEMO-DataGrip对接Hive/Impala

免责声明
DBeaver非网易产品,本文档仅供参考,非NDH服务问题对接失败,请求助产品提供方售后或社区。

适用模块

客户端

具体说明

客户端工具对接集群

使用示例

前置条件
1). 准备Java环境,使用JDK8, 具体参考https://study.sf.163.com/documents/read/service_support/dsc-p-a-0131 中JDK配置章节
2). 准备 hiveserver2 服务的jdbc 连接串,通过 easyops 服务管理页面中的 hive 服务实例获取。
DEMO-DataGrip对接Hive - 图1
3). 准备 krb5.conf 配置文件,可以从集群任何一台机器的/etc/krb5.conf 路径中获取。
4). 从集群任何一台机器获取 /etc/hosts 文件,并将内容追加配置到 hosts文件中
5). 确认当前终端与集群中Kerberos kdc 1088、 zookeeper server 2182、hiveserver2 9999端口能够连通,kdc、zookeeper、hiveserver2 实例地址可以从 easyops 查看,连通性可通过telnet 命令验证。
6). 准备用于 Kerberos 认证的 keytab 和 principal,放在终端用户有权限访问的目录,如桌面目录。
DataGrip连接Hive

DataGrip可通过jdbc方式连接Hive/Impala;
驱动依赖Jar包如下:

commons-collections-3.2.2.jar
commons-configuration-1.6.jar
commons-httpclient-3.0.1.jar
commons-logging-1.1.3.jar
curator-client-2.10.0.jar
curator-framework-2.10.0.jar
hadoop-auth-2.9.2.jar
hadoop-common-2.9.2.jar
hive-common-2.1.1.jar
hive-exec-2.1.1.jar
hive-jdbc-2.1.1.jar
hive-metastore-2.1.1.jar
hive-service-2.1.1.jar
httpclient-4.5.6.jar
httpcore-4.4.6.jar
log4j-api-2.16.0.jar
log4j-core-2.16.0.jar
slf4j-api-1.7.25.jar
stax2-api-3.1.4.jar
woodstox-core-5.0.3.jar
zookeeper-3.4.6.jar

# 以上驱动包可通过集群上hive及hadoop客户端中获取或直接通过https://docs.popo.netease.com/docs/205fe444c8ad430485633076b74d77f1 下载集成包

连接信息配置:将URL选项配置为完整JDBC连接串即可(URL地址需使用主机名,principal值固定为 hive/_HOST@实际REALM,不要写成下文用的keytab 里的principal,连接串中可通过mapreduce.job.queuename=poc 指定队列)

8Qao33

Kerberos支持
# /00-conf/demo-krb/krb5.conf  可从集群节点/etc/krb5.conf拷贝, 供后续VM options配置使用
[libdefaults]

  default_ccache_name = FILE:/tmp/krb5cc_%{uid}  # mac必须添加此配置,否则缓存文件默认为KCM导致客户端认证失败
  default_realm=BDMS.163.COM
  allow_weak_crypto=true
  dns_lookup_realm=false
  dns_lookup_kdc=false
  ticket_lifetime=24h
  renew_lifetime=7d
  forwardable=true
  udp_preference_limit=1

[domain_realm]
  jd.163.org=BDMS.163.COM
  .jd.163.org=BDMS.163.COM

[realms]
  BDMS.163.COM={
    admin_server=bigdata-demo1.jdlt.163.org
    kdc=bigdata-demo1.jdlt.163.org
    kdc=bigdata-demo2.jdlt.163.org
  }
# 配置客户端工具自动kerberos验证,注意keyTab地址为本机电脑上存放访问集群 keytab 文件的地址,可从个人中心下载。所用的keytab principal 前缀,下面的dsc_support,就是访问的用户,需要有相应的hdfs、hive 权限
# /Users/semon/wks/tools/jgss.auth  本地路径,供后续VM options配置使用
com.sun.security.jgss.initiate{
      com.sun.security.auth.module.Krb5LoginModule required
      useKeyTab=true
      useTicketCache=false
      keyTab="/Users/semon/wks/tools/dsc_support.keytab"
      principal="dsc_support/dev@BDMS.163.COM"
      doNotPrompt=true
      debug=true
      debugNative=true;
   };

VM options配置如下:

-Djava.security.auth.login.config=/Users/semon/wks/tools/jgss.auth  -Djava.security.krb5.conf=/00-conf/demo-krb/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false
windows系统jgss.auth及VM option中路径同样使用单斜线分割

如有以下报错,由于使用的高版本jdk 存在类加载问题,kerberos 相关配置无法通过连接配置增加,需要添加额外的jvm 参数

class org. apache. hadoop. security. authentication. util. KerberosUtil cannot access class sun. security. krb5.Config (in module java. security. jgss) because module java. security. jgss does not export sun. security. krb5 to unnamed module @233e4784.

此时,VM options配置如下:

--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED -Djava.security.auth.login.config=/Users/semon/wks/tools/jgss.auth  -Djava.security.krb5.conf=/00-conf/demo-krb/krb5.conf -Djavax.security.auth.useSubjectCredsOnly=false

如有报错 "未找到驱动程序类",确认上述 VM options配置的路径里是否有存在空格,可以设置路径不包含空格,或者用双引号将路径引起来

如有报错 "GSS initiate failed",尝试修改hive 驱动程序中“虚拟机主路径” 所用的JDK 版本,目前发现部分 JDK版本会有该问题,替换版本后正常

OkZISb

连接测试

DEMO-DataGrip对接Hive - 图4 DEMO-DataGrip对接Hive - 图5

作者:wangsong