百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

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

bigegpt 2024-08-26 11:12 2 浏览

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

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文件命令

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目录下

[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文件,内容如下:

[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文件,内容如下:

[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增加如下配置

<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集群所有节点的服务

[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并赋予可以执行权限

https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.205/presto-cli-0.205-executable.jar

(可左右滑动)

[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

/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实操

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...