Hiveserver2的代理执行之路

本文深入探讨HiveServer2的代理执行机制,如何通过配置实现用户权限隔离,并阐述了客户端代理的问题与解决方案,为集成数据平台提供指导。
摘要由CSDN通过智能技术生成

背景

对于一个数据平台的SQL查询服务,impala提供了优于hive/spark sql等一批sql-on-mr/spark性能的查询引擎,并且得益于impala可以直接共享hive的metastore,可以对用户提供”一套数据,多种引擎”的服务,目前我们计划在数据平台集成hive/spark/impala这几种SQL引擎。众所周知,hive无论是在稳定性还是在成熟度上都要优于后两者,不管是spark还是impala在使用的过程中总是需要对其进行一定的修改支持hive提供的特性,其中有一个对于平台服务最有用的特性——代理执行。

hiveserver2的代理访问可以使得平台端代理任意用户执行SQL操作就像该用户自己执行的操作一样(就像一个普通用户直接使用hive CLI执行操作),本文主要探索hiveserver2是如何使用代理的方式实现支持不同用户完成SQL操作,为修改impala支持对应的操作做铺垫。

HiveServer2的实现

在启动hive server2的时候,我们通常需要一个hive.keytab,这个用户在hadoop上被配置为可代理的用户(具体的配置是在namenode的core-site.xml中添加hadoop.proxyuser.hive.hosts=xxx和hadoop.proxyuser.hive.groups=xxx配置项,以确定hive用户可以对指定host的指定groups的用户执行代理),除了对hiveserver2配置principal和keytab之外,还需要设置hive.server2.enable.doAs参数为true(该配置项默认值就是true),该配置表示对于用户的操作,hiveserver2将以代理的方式访问HDFS和提交MR任务。

好了,以代理的方式配置好了hiveserver2,我们可以看一下利用这个特性能够做到什么。
在本例中,hive.keytab已经被配置了可代理的权限,其他用户全是普通用户。通过beeline连接hiveserver2,beeline作为client会以当前用户的kerberos cache中认证的kerberos用户作为被代理的账号执行,例如当前机器上的用户是nrpt:

>  klist
Ticket cache: FILE:/tmp/krb5cc_50997
Default principal: nrpt/dev@HADOOP.HZ.NETEASE.COM

Valid starting    Expires           Service principal
10/02/2017 09:30  11/02/2017 07:30  krbtgt/HADOOP.HZ.NETEASE.COM@HADOOP.HZ.NETEASE.COM
     renew until 11/02/2017 09:30

然后连接hiveserver2执行查询:

> beeline -u "jdbc:hive2://db-53.photo.163.org:10000/default;principal=hive/app-20.photo.163.org@HADOOP.HZ.NETEASE.COM"
C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值