前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何为Presto集成Kerberos环境下的Hive

如何为Presto集成Kerberos环境下的Hive

作者头像
Fayson
发布2018-07-12 15:58:55
4.2K0
发布2018-07-12 15:58:55
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

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

提示:代码块部分可以左右滑动查看噢

在前面的文章Fayson介绍了《如何在CDH集群中部署Presto》以及Presto与Hive的集成,本篇文章Fayson主要介绍如何为Presto集成Kerberos环境下的Hive。

  • 内容概述:

1.环境准备

2.Presto与Kerberos环境Hive集成

3.Presto与Hive集成测试

4.总结

  • 测试环境:

1.CM5.14.3/CDH5.14.2

2.Presto版本0.205

3.操作系统版本为Redhat7.3

4.采用root用户进行操作

5.集群已启用Kerberos且Hive服务正常运行

6.集群已启用Sentry

2.环境准备


1. Presto部署节点及角色说明

IP地址

HOSTNAME

NodeID

角色

172.27.0.4

cdh01.fayson.com

presto-cdh01

coordinator

172.27.0.11

cdh02.fayson.com

presto-cdh02

worker

172.27.0.7

cdh03.fayson.com

presto-cdh03

worker

172.27.0.3

cdh04.fayson.com

presto-cdh04

worker

Presto服务的安装目录为/opt/cloudera/parcels/presto

2.准备Presto访问Hive的Kerberos账号并生成keytab文件

这里Fayson使用presto用户来访问HiveMetastore及HDFS,如下是Fayson创建Kerberos账号和导出Keytab文件命令

代码语言:javascript
复制
kadmin.local -q "addprinc -randkey presto/admin@FAYSON.COM"
kadmin.local -q "xst -norandkey -k presto.keytab presto/admin@FAYSON.COM"

(可左右滑动)

3.将生成presto.keytab文件拷贝至Presto集群所有节点的/opt/cloudera/parcels/presto/etc目录下

代码语言:javascript
复制
[root@cdh01 shell]# sh bk_cp.sh node.list /root/presto.keytab /opt/cloudera/parcels/presto/etc/

(可左右滑动)

3.Presto集成Kerberos环境Hive


1.修改Presto集群的${PRESTO_HOME}/etc/catalog/hive.properties文件,内容如下:

代码语言:javascript
复制
[root@cdh01 catalog]# pwd
/opt/cloudera/parcels/presto/etc/catalog
[root@cdh01 catalog]# vim hive.properties 
connector.name=hive-hadoop2
hive.metastore.uri=thrift://cdh01.fayson.com:9083

#配置Presto访问HiveMetastore服务的Kerberos信息,该段配置可以只存在Presto的Coordinator节点
hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/_HOST@FAYSON.COM
hive.metastore.client.principal=presto/admin@FAYSON.COM
hive.metastore.client.keytab=/opt/cloudera/parcels/presto/etc/presto.keytab

#配置Presto访问HDFS的Kerberos信息,改段配置可以只存在Presto的Worker节点
hive.hdfs.authentication.type=KERBEROS
hive.hdfs.impersonation.enabled=true
hive.hdfs.presto.principal=presto/admin@FAYSON.COM
hive.hdfs.presto.keytab=/opt/cloudera/parcels/presto/etc/presto.keytab

(可左右滑动)

在hive.properties配置文件中增加访问HiveMetastore和HDFS的Kerberos认证信息,将如上配置同步至Presto集群所有节点的${PRESTO_HOME}/etc/catalog/hive.properties文件中。

注意:在配置hive.metastore.url时,需要使用HiveMetastore服务的HOSTNAME,否则在使用Kerberos访问HiveMetastore时会报找不到Kerberos账号的错误。

2.修改Presto的JVM参数,创建jvm.config文件,内容如下:

代码语言:javascript
复制
[root@cdh01 presto-etc]# vim jvm.config
-server
-Xmx8G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+CMSClassUnloadingEnabled
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
-XX:ReservedCodeCacheSize=150M
-Djava.security.krb5.conf=/etc/krb5.conf
-Dsun.security.krb5.debug=true

(可左右滑动)

在jvm.conf文件中增加java.security.krb5.conf和sun.security.krb5.debug配置,用于指定krb5.conf和配置Kerberos的Debug模式。

3.登录Cloudera进入HDFS服务,搜索core-site.xml增加如下配置

代码语言:javascript
复制
<property>
    <name>hadoop.proxyuser.presto.hosts</name>
    <value>*</value>
</property>
    <property><name>hadoop.proxyuser.presto.groups</name>
    <value>*</value>
</property>

(可左右滑动)

配置完成,根据提示重启CDH集群。

由于hive.properties配置文件中Fayson配置了presto用户访问HDFS,并且启用了用户模拟的功能,所以需要在core-site.xml中增加presto用户代理配置。

4.修改完以上配置后重启Presto服务,重启Presto集群所有节点的服务

代码语言:javascript
复制
[root@cdh01 ~]# /opt/cloudera/parcels/presto/bin/launcher restart  

(可左右滑动)

4.Presto与Hive集成测试


这里测试Presto与Hive的集成使用Presto提供的Presto CLI,该CLI是一个可执行的JAR文件,也意味着你可以想UNIX终端窗口一样来使用CLI。

1.下载Presto的presto-cli-0.205-executable.jar,并重命名为presto并赋予可以执行权限

代码语言:javascript
复制
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.205/presto-cli-0.205-executable.jar

(可左右滑动)

代码语言:javascript
复制
[root@cdh01 presto-etc]# mv presto-cli-0.205-executable.jar presto
[root@cdh01 presto-etc]# chmod +x presto 
[root@cdh01 presto-etc]# ll presto 

(可左右滑动)

2.在命令行执行命令访问Hive

代码语言:javascript
复制
/root/presto-etc/presto \
   --server http://cdh01.fayson.com:8080 \
   --catalog hive \
   --schema default \
   --user hive

(可左右滑动)

执行Select和Count操作

登录Presto的8080界面查看SQL执行记录

可以看到在使用CLI访问Hive时,指定了user用户为hive,执行SQL是会模拟hive用户访问Hive。

5.总结


1.Fayson在集成Kerberos环境的Hive时,使用presto用户访问HiveMetastore和HDFS服务。

2.如果在访问HDFS服务中启用了用户模拟功能则需要在到HDFS的core-site.xml文件中增加presto用户的代理配置。

3.因为集群启用了Sentry,在使用Presto的CLI进行测试时,需要指定user为hive用户,有权限访问Hive的所有表,指定其它用户则需要为其它用户授权,否则在访问表时会报无权限访问HDFS目录。

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。

推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档