0465-如何使用SQuirreL访问Kerberos环境下的Hive

Fayson的github: https://github.com/fayson/cdhproject

推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。

1.文章编写目的

在前面Fayson的文章《0459-如何使用SQuirreL通过JDBC连接CDH的Hive(方式一)》和《0463-如何使用SQuirreL通过JDBC连接CDH的Hive(方式二)》介绍了SQuirreL的安装以及使用原生和Cloudera提供的JDBC 驱动访问Hive。本篇文章Fayson主要介绍如何使用Cloudera提供的Hive JDBC驱动访问Kerberos环境下的Hive,为什么不讲原生的JDBC驱动,因为Fayson也没有调通。

测试环境:

1.RedHat7.2

2.CM和CDH版本为5.15.0

3.Window Server 2012R2

4.SQuirreL版本为3.9.0

2.安装Kerberos客户端

1.在Kerberos官网下载,地址如下

https://web.mit.edu/kerberos/dist/index.html
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第1张图片

安装过程这里就不在详细说明了。

2.将CDH集群的/etc/krb5.conf文件,在Window客户端如下目录创建krb5.ini文件,内容如下:

“C:\ProgramData\MIT\Kerberos5\krb5.ini”
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = true
default_realm = FAYSON.COM
#default_ccache_name = KEYRING:persistent:%{uid}

[realms]
FAYSON.COM = {
  kdc = adserver.fayson.com
  admin_server = adserver.fayson.com
}

[domain_realm]
.fayson.com = FAYSON.COM
fayson.com = FAYSON.COM
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第2张图片

3.配置环境变量,krb5.ini文件以及Kerberos Credential Cache File的路径

变量名:KRB5_CONFIG,变量值:C:\ProgramData\MIT\Kerberos5\krb5.ini

变量名:KRB5CCNAME,变量值:C:\temp\krb5cache

0465-如何使用SQuirreL访问Kerberos环境下的Hive_第3张图片

注意:KRB5CCNAME的路径默认是不存在的,因此需要在C盘下创建temp文件夹,krb5cache文件则不需要创建。

配置完环境变量后,重启计算机使其生效。

4.完成以上配置后,在Window客户端测试是否能够正常kinit
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第4张图片

Kinit成功后
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第5张图片

3.SQuirreL注册Hive驱动

1.在SQuirreL上添加一个Hive的驱动

注意这里的Example URL:

jdbc:hive2://cdh2.fayson.com:10000/;AuthMech=1;KrbRealm=FAYSON.COM;KrbHostFQDN=cdh2.fayson.com;KrbServiceName=hive;KrbAuthType=2

0465-如何使用SQuirreL访问Kerberos环境下的Hive_第6张图片

注意:这个URL的几个参数

AuthMech: 0无认证、1Kerberos认证、2用户名方式、3用户名和密码认证、6使用Hadoop授权认证

KrbRealm:你的KDC服务定义的域名

krbHostFQDN:你的HiveServer2服务的FQDN(hostname或你dns解析的域名)

KrbServiceName:HiveServer2服务的Principal默认为hive

KrbAuthType:0表示获取你的Subject来实现Kerberos认证、1表示基于JAAS方式获取Kerberos认证、2表示基于当前客户端的Tick Cache方式认证

4.SQuirreL访问Hive

1.使用Kerberos客户端登录访问Hive的Kerberos账号

0465-如何使用SQuirreL访问Kerberos环境下的Hive_第7张图片

2.在SQuirreL创建一个访问Kerberos的Hive连接
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第8张图片

3.创建成功后进行连接即可
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第9张图片

4.执行SQL查询
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第10张图片

5.总结

1.注意在使用Cloudera提供的Hive驱动包访问Kerberos环境下的Hive时注意JDBC URL地址配置方式。

2.Cloudera提供的Hive JDBC驱动与Hive原生的驱动类有些区别,驱动类需要指定为“com.cloudera.hive.jdbc41.HS2Driver”。使用Cloudera提供的驱动包不需要考虑驱动包依赖的问题,默认的将Hive驱动所依赖的包都打包在里面。

3.特别强调在Window机器上配置Kerberos客户端时,需要配置KRB5_CONF和KRB5CCNAME两个环境变量,否则在使用访问时会报“Unable to obtain Principal Name for authentication”


为天地立心,为生民立命,为往圣继绝学,为万世开太平。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
0465-如何使用SQuirreL访问Kerberos环境下的Hive_第11张图片

原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操

0465-如何使用SQuirreL访问Kerberos环境下的Hive_第12张图片

你可能感兴趣的:(Hadoop实操)