Hive 中的权限设置

Hive 底层数据都是存储在HDFS上的。 


因此Hive的权限管理也分为HDFS 和Hive自身两个层面。 


HDFS层面的权限管理:

因为由 Hive创建的表的数据文件及目录 这些文件目录存放在HDFS上,因此每个文件都有相应的HDFS 权限设置。 


hive中有个配置项  hive.files.umask.value = 002   

表示由hive 创建的文件的权限掩码是 002,  (和777做减操作),   则hive 创建的表文件的权限为 775, 即 

十进制掩码    权限位(w.r.x)

777                111.111.111

002                000.000.010    进行或操作

--------------------------------------------

775                111.111.101

这个配置项在0.90版中被替代了。 新的设置项(在hive-site.xml中配置为:

hive.warehouse.subdir.inherit.perms
  • Default Value: false
  • Added In: Hive 0.9.0 with HIVE-2504

Set this to true if table directories should inherit the permissions of the warehouse or database directory instead of being created with permissions derived from dfs umask. (This configuration property replaced hive.files.umask.value before Hive 0.9.0 was released.)

这段说明, 如果设置inherit.perms 为true,则 子表的权限设置继承自warehouse 目录的设置。 就会使用hdfs的配置 dfs.umask 值来指定权限。 

例如apps/hive/warehouse   权限为775drwxrwxr-x

  • hive hadoop drwxrwxr-x June 18, 2014 11:29 am
     则新建的table所在的文件夹也是775的权限

第二部分 Hive 基于数据库的权限管理, hive中也有database, table等概念, 因此对这些实体也都配置了权限设置。 
用户, 组, 以及角色
hive的用户,组就是执行hive 客户端进程的用户以及他所在的linux上的组。 (可以使用whoami 来看进程,也可以使用bash -c groups来看该用户所属的组)

可以使用grant命令对用户,组明确的授予对表,database 上的具体权限。 例如Select, Update, ALL等。 




你可能感兴趣的:(Hive 中的权限设置)