共计 2712 个字符,预计需要花费 7 分钟才能阅读完成。
使用 Hadoop ACL 控制访问权限
一、HDFS 访问控制
hdfs-site.xml 设置启动 acl
<property>
<name>dfs.permissions.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.namenode.acls.enabled</name>
<value>true</value>
</property>
core-site.xml 设置用户组默认权限.
<property>
<name>fs.permissions.umask-mode</name>
<value>002</value>
</property>
各需求和解决办法如下:
1. 除了数据仓库负责人, 普通用户不能创建数据库, 也不能在默认库中创建表.
/user/hive/warehouse 的默认权限改为 755, 所有者是 hadoop(或者数据仓库负责人), 那么没有人能创建数据库, 也不能在默认库中创建表.
2. 数据仓库负责人创建数据库之后, 可以分配给项目组, 该项目组可以在此数据库建立表.
/user/hive/warehouse/ 数据库.db 的所有者改为项目组.
3. 数据仓库负责人创建数据库之后, 不把创建表的权限分给项目组, 而为其创建表, 只允许项目组插入分区.
数据仓库负责人继续保持 /user/hive/warehouse/ 数据库.db 的权限, 项目组不能建立表, 数据仓库负责人为项目组创建表之后, 把表所在的目录分给项目组.
4. 某些表只能本项目组读写.
/user/hive/warehouse/ 数据库.db/ 表名所在的目录改为 770 .
5. 某些表只能本项目组的特殊用户读写.
/user/hive/warehouse/ 数据库.db/ 表名所在的目录的所有者改为此用户, 并且权限改为 700 .
6. 项目组的表, 需要其它组的特别用户插入数据.
使用以下的命令可以 mapngxu 对 dntest.db 的表 testp1 有写权限 hdfs dfs -setfacl -R -m user:mapengxu:rwx /user/hive/warehouse/cdntest.db/testp1
7. 项目组的表, 需要其它组的特别用户有读到数据的权限.
hdfs dfs -setfacl -R -m user:mapengxu:r-x /user/hive/warehouse/cdntest.db/testp1
8. 项目组的表, 需要其它组的所有用户有读到数据的权限.
hdfs dfs -setfacl -R -m group:data_sum:r-x /user/hive/warehouse/cdntest.db/testp1
9. 创建默认数据库,此数据库所有用户都有创建 表的权限,但只保存 30 天.
/user/hive/warehouse/ 数据库.db 的权限改为 777,并且设置定时任务扫描该目录及 hive 数据库。如果有创建时间超过 30 天的表,删除表及所在目录。
10. 该措施和基础 SQL 的访问控制结合。
任务调度
按用户组管理队列, 在入口机和 jenkins 权限统一, 按所在组分配资源,方便按项目组统计各项目组每天, 每周占用多少集群资源. mapred-site.xml 配置如下:
<property>
<name>mapred.acls.enabled</name>
<value>true</value>
</property>
<property>
<name>mapred.fairscheduler.poolnameproperty</name>
<value>group.name</value>
</property>
fair-scheduler.xml 配置如下:
<?xml version=”1.0″?>
<allocations>
<pool name=”cdn”>
<maxResources>1000 vcores</maxResources>
<maxRunningJobs>10</maxRunningJobs>
<weight>1.0</weight>
<schedulingPolicy>fair</schedulingPolicy>
</pool>
<pool name=”data_sum”>
<maxResources> 1000 vcores</maxResources>
<maxRunningJobs>10</maxRunningJobs>
<weight>1.0</weight>
<schedulingPolicy>fair</schedulingPolicy>
</pool>
<userMaxAppsDefault>2</userMaxAppsDefault>
<queuePlacementPolicy>
<rule name=”primaryGroup” create=”false” />
<rule name=”secondaryGroupExistingQueue” create=”false” />
<rule name=”user” create=”false”/>
<rule name=”reject”/>
Ubuntu14.04 下 Hadoop2.4.1 单机 / 伪分布式安装配置教程 http://www.linuxidc.com/Linux/2015-02/113487.htm
CentOS 安装和配置 Hadoop2.2.0 http://www.linuxidc.com/Linux/2014-01/94685.htm
Ubuntu 13.04 上搭建 Hadoop 环境 http://www.linuxidc.com/Linux/2013-06/86106.htm
Ubuntu 12.10 +Hadoop 1.2.1 版本集群配置 http://www.linuxidc.com/Linux/2013-09/90600.htm
Ubuntu 上搭建 Hadoop 环境(单机模式 + 伪分布模式)http://www.linuxidc.com/Linux/2013-01/77681.htm
Ubuntu 下 Hadoop 环境的配置 http://www.linuxidc.com/Linux/2012-11/74539.htm
单机版搭建 Hadoop 环境图文教程详解 http://www.linuxidc.com/Linux/2012-02/53927.htm
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-06/118389.htm