Hive 权限控制

发布于 2024-07-26 11:33:55 字数 5376 浏览 12 评论 0

hive 权限控制主要是底层 HDFS 和 hive 自身对表的授权管理。

1.多用户启动 hive

1.1 非管理员身份

如以当前登录的用户进入 hive cli,报错了,提示没有权限

$ hive
Exception in thread "main" java.lang.RuntimeException: java.io.IOException: Permission denied

解决办法,这个主要是由于 hive 配置文件中配置的一些临时或存放中间结果的目录权限设置问题,导致当前登陆 hive 的用户没权限访

主要涉及如下两个参数:

<property>  
  <name>hive.exec.scratchdir</name>  
  <value>hdfs://hadoop-master:9000/opt/tmp/hive</value>  
  <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive
.exec.scratchdir};username is created, with ${hive.scratch.dir.permission}</description>  
</property>
  
<property>  
  <name>hive.exec.local.scratchdir</name>  
  <value>/opt/tmp/hive_scratchdir</value>  
  <description>Local scratch space for Hive jobs</description>  
</property>  

需要修改对应的 hdfs 和本地两个目录的权限

# hdfs 
hdfs dfs -ls /opt/tmp/hive
drwx------   - hadoop     supergroup          0 2018-10-13 23:23 /opt/tmp/hive/hadoop
drwx------   - hue        supergroup          0 2017-12-08 20:47 /opt/tmp/hive/hue
drwx------   - root       supergroup          0 2018-09-19 16:50 /opt/tmp/hive/root

# 本地
ll /opt/tmp/hive_scratchdir
total 16
drwx------ 2 hadoop hadoop 4096 Nov 15  2017 164dc4ef-1442-4c67-b1e4-6c4f48f93fa8
drwx------ 2 hadoop hadoop 4096 Oct 13 20:47 42d5af9a-ecb1-4708-92fa-176ba0ca8b30
drwx------ 2 hadoop hadoop 4096 Oct 13 23:24 b54b7bc2-2156-4afa-833a-ee0b69e5c687
-rw-rw-r-- 1 hadoop hadoop    0 Oct 13 23:23 b54b7bc2-2156-4afa-833a-ee0b69e5c6875489728272456121679.pipeout
...

修改为 666 即可,注意路径上的所有父目录路径也要有相应的访问权限!!!

hdfs dfs -chmod -R 755 /opt
hdfs dfs -chmod -R 777 /tmp/hadoop-yarn/

chmod -R 777 /opt/tmp

同理参考: Hadoop 2.7.x Permission denied: user=dr.who, access=READ_EXECUTE, inode="/tmp"问题解决

以管理员身份启动 hive:

hive -hiveconf hive.root.logger=INFO,console

2.Hive 用户对底层文件的权限

hive 用户对底层文件的访问权限,主要通过设置 3 个参数完成:

<property>  
  <name>hive.files.umask.values</name>  
  <value>0022</value>  
  <description>当 hive 在 hdfs 上创建文件时,对应的默认掩码。此处的 0022,第一个 0 表示八进制;剩下的 022 用二进制表示即 000010010,然后取反得 111101101,即 rwxr-xr-x,这样其他用户登录 hive 或 hdfs 时候,就没权限删除该文件</description>  
</property>  
  
<property>  
  <name>hive.metastore.authorization.storage.checks</name>  
  <value>true</value>  
  <description>就是配合 hive.files.umask.values 参数做权限控制.</description>  
</property>  
  
<property>  
  <name>hive.metastore.execute.setugi</name>  
  <value>true</value>  
  <description>简单说就是,hadoop 在非安全模式(未使用 kerborers 认证)时,使用 hive 客户端进程对应的用户和组权限操作 hdfs</description>  
</property>  

已经在阿里 EMR Hive 配置上添加了该参数(需要重启 hive),通过以上配置,进入 hive 的用户就不能随意对底层文件随意操作了,必须具有相应权限。接下来可以进行 hive 自身类似 mysql 一样的权限授权管理了。

3. Hive 自身权限

开启权限

<property>   
   <name>hive.security.authorization.enabled</name>   
   <value>true</value>   
   <description>开启权限验证</description>   
</property>   
<property>   
   <name>hive.security.authorization.createtable.owner.grants</name>   
   <value>ALL</value>   
   <description>表的创建者对表拥有所有权限</description>  
</property>  

hive 授权核心:

  • 用户
  • 角色

举例:

用户描述
张三G_db1可访问 db1
李四G_db2可访问 db2
王五G_bothdb可访问 db1、db2

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

北城孤痞

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

qq_E2Iff7

文章 0 评论 0

Archangel

文章 0 评论 0

freedog

文章 0 评论 0

Hunk

文章 0 评论 0

18819270189

文章 0 评论 0

wenkai

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文