最近遇到一个hive权限的问题,先简单记录一下,目前自己的理解不一定对,后续根据自己的理解程度更新


一、hive用户的概念

  hive本身没有创建用户的命令,hive的用户就是Linux用户,若当前是用mr用户输入hive,进入hive的shell,则当前hive的用户为mr。

  hive本身不提供用户和用户的管理,只做权限控制。

  所以在实际的生产中,容易造成创表和使用表的用户不统一的情况,针对该情况可以使用beeline的方式连接hive,简洁的命令如下,具体的使用方式可以百度查找。

 beeline -u jdbc:hive2//mysql_IP:port -n username

二、hive数据存储方式

  这里讨论基于MySQL的remote方式,这种方式可以支持多用户的并发模式。

  hiveserver元数据信息是存在MySQL中的,存在MySQL中的元数据信息包括:表的位置、创建时间、数据库相关、表相关关系以及表的一些授权信息等,没有具体的内容;物理表是存在HDFS上的。

  因为数据是存在HDFS上的,创表或导入数据时候,当前用户要对存放数据的HDFS目录要有权限。若没有相关权限,会导致很多操作都会报错。

三、hive权限问题

  1.   在hive-site.xml文件中,开启权限认证,参数如下:
 hive.security.authorization.enabled  //默认为false
hive.security.authorization.createtable.owner.grants

    2.  在用户没有权限的做某项操作的时候,可以通过以下语句赋给用户ALL的权限或者对应的权限。

 GRATN ALL TO USER username;

  但是这样做,有点力度不够细,比如你想给某个用户赋select、create的权限,别的权限不给,这样上述语句就得执行两遍,当用户多的时候,这种情况尤为繁琐。

  在hive中role(角色)这一概念,可以较好的解决上述问题。可以将不同的权限根据需要赋给对应的role,然后将这个role赋给用户,再将相应的权限赋给这个role,这样用户就可以根据role的权限执行相应操作,这样在权限管理上更加灵活了。

   3.  实际上,所有的Linux系统用户登录hive后,都可以执行Grant/revoke操作,这样假如一个用户没有某一权限了,很简单只需要执行一次grant就行,可以认为hive用户自己管理自己的权限。

  这个可以在hive-site.xml文件中配置hive.semantic.analyzer.hook,然后实现自己的权限控制类,即可。控制类的实现可上网百度。

  配置好上面的配置项后,相当于是设置超级管理员权限,具体的权限根据自己的权限控制类。此时若要新增一个超级管理员用户,可以在hive-site.xml文件的hive.users.in.super.administrator中设置。


update:2018-12-25

  

4.  hive用户权限管理的简单流程:

    i)创建超级管理员;

    ii)新建用户,赋予hive目录的权限;

    iii)超级管理员进入hive,给指定用户(组)赋操作权限;

    iv)使用新建用户连接hive;

4、hive有两种 授权机制:

总结来说为:1、基于底层HDFS的权限;2、基于标准SQL的grant等命令。具体的在实践中的注意点已在上面提及。

Ref:

https://www.cnblogs.com/yejibigdata/p/6394719.html

Hive权限管理的更多相关文章

  1. HADOOP docker(七):hive权限管理

    1. hive权限简介1.1 hive中的用户与组1.2 使用场景1.3 权限模型1.3 hive的超级用户2. 授权管理2.1 开启权限管理2.2 实现超级用户2.3 实现hiveserver2用户 ...

  2. Hive权限管理(十)

    Hive权限管理 1.hive授权模型介绍 (1)Storage Based Authorization in the Metastore Server 基于存储的授权 - 可以对Metastore中 ...

  3. hive权限管理之实践

    一.实践心得 主要参考这个连接,里面说得也挺详细的.http://www.aboutyun.com/thread-12549-1-1.html 总结如下: 1.若赋予用户某个表的权限,查用户在该表所属 ...

  4. 【Hive学习之七】Hive 运行方式&权限管理

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 ...

  5. hive(七)hive-运行方式、GUI接口、权限管理

    1.Hive运行方式: 命令行方式cli:控制台模式 脚本运行方式(实际生产环境中用最多) JDBC方式:hiveserver2 web GUI接口 (hwi.hue等)   1.1Hive在CLI模 ...

  6. Hive权限之改进

    不足 即使开启hive权限认证的情况下,不论什么用户仍然是超级用户.能够通过grant给不论什么人赋予不论什么权限,这样权限认证基本没有意义.因此必须在开启权限认证的同一时候.对运行grant/rev ...

  7. Hive 系列(二)权限管理

    Hive 系列(二)权限管理 一.关于 Hive Beeline 问题 启动 hiveserver2 服务,启动 beeline -u jdbc:hive2:// 正常 ,启动 beeline -u ...

  8. HDFS、Yarn、Hive…MRS中使用Ranger实现权限管理全栈式实践

    摘要:Ranger为组件提供基于PBAC的鉴权插件,供组件服务端运行,目前支持Ranger鉴权的组件有HDFS.Yarn.Hive.HBase.Kafka.Storm和Spark2x,后续会支持更多组 ...

  9. Spark SQL Thrift Server 配置 Kerberos身份认证和权限管理

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 之前的博客介绍了通过Kerberos + Sentry的方式实现了hive server2的身份认证和权限管理功能,本文主 ...

随机推荐

  1. 随机图片api

    什么是随机图片api 随机图片api是什么呢?通俗的讲就是当你访问一个api时,浏览器会随机返回给你一张图片. 其实原理很简单,把你要随机的图片放在一起,然后写一个php,当php被访问时,就随机指向 ...

  2. Visual Studio的框选代码区块功能

    要从Visual Studio里复制代码粘贴到其他地方,会因为对齐的问题,造成粘贴的时候,代码左边带有大量的空格. 而VS有一个很好的功能就是框选功能,使用方法是,将光标放置在要框选代码的最左边,然后 ...

  3. spring-framework-reference(5.1.1.RELEASE)中文版——Core部分

    前言 最近在学习Spring框架,在学习的同时,借助有道翻译,整理翻译了部分文档,由于尚在学习当中,所以该篇文章将会定时更新,目标在一个月左右时间翻译完全部版本. 虽然大部分内容为翻译,但是其中可能会 ...

  4. 打包应用和构建Docker镜像(docker在windows上)

    在构建Docker时编译应用 一般有两种方法在构建镜像时进行打包应用.第一种方法就是使用基本的镜像,该镜像包括应用平台和构建工具,因此在Dockerfile中,复制源代码到镜像中并在构建镜像时编译ap ...

  5. POJ 3164 Sunscreen (挑战程序设计竞赛的练习题)

    题目:https://vjudge.net/problem/POJ-3614 思路参考这个:https://blog.csdn.net/qq_25576697/article/details/7657 ...

  6. centos6.9 安装完xampp 7.2.0后,执行/opt/lampp/lampp报错

    # /opt/lampp/lampp egrep: error while loading shared libraries: libc.so.6: cannot open shared object ...

  7. LVS 负载均衡 keepalive

    为什么要学lvs 工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名.目录结构, Nginx单凭这点可利用的场合就远多于LVS了.最新版本的Nginx也支持4层TCP负载,曾经这 ...

  8. Python基础_内置函数

        Built-in Functions     abs() delattr() hash() memoryview() set() all() dict() help() min() setat ...

  9. mysql更新表数据时报错 You can't specify target table 'RES_CATALOG_CLASSIFY' for update in FROM clause

    You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据. 将sql语句 UPDATE RES ...

  10. Scrum Meeting 报告

    Scrum Meeting 报告 ----团队项目所需时间估计以及任务分配 由于能力有限,我们还不能构架好一个大框架.但是初步可以完成任务的流程和分配.任务所需要的具体实现可以参看<学霸系统的N ...