zoukankan      html  css  js  c++  java
  • Hadoop 权限管理(转)

    如下图,hadoop访问控制分为两级,其中ServiceLevel Authorization为系统级,用于控制是否可以访问指定的服务,例如用户/组是否可以向集群提交Job,它是最基础的访问控制,优先于文件权限和mapred队列权限验证。Access Control on Job Queues在job调度策略层之上,控制mapred队列的权限。DFSPermmision用户控制文件权限。目前版本中,连接到hadoop集群的用户/组信息取决于客户端环境,即客户端主机中`whoami`和`bash –c groups`取到的用户名和组名,没有uid和gid,用户属组列表中只要有一个与集群配置的用户组相同即拥有该组权限。

    1、 配置Service Level Authorization

    修改core-site.xml

    <property>  
     <name>hadoop.security.authorization</name>  
      <value>true</value>  
    </property>  

    hadoop.security.authorization=true则开启ServiceLevel Authorization,若为false则不经过任何验证,所有用户拥有全部权限。(修改此配置需要重启hadoop)

    Service LevelAuthorization有9个可配置的属性,每个属性可指定拥有相应访问权限的用户或者用户组。这9个ACL属性如下(hadoop-policy.xml):

    这9个属性的配置方法相同,具体如下:

    每个可配置多个用户,用户之间用“,”分割;可配置多个用户组,分组之间用“,”分割,用户和分组之间用空格分割,如果只有分组,前面保留一个空格,如:

    <property>  
      <name>security.job.submission.protocol.acl</name>  
      <value>alice,bobgroup1,group2</value>  
    </property>  

    默认情况下,这9个属性不对任何用户和分组开放。

    该配置文件可使用以下命令动态加载:

    (1)    更新namenode相关属性:bin/hadoop dfsadmin –refreshServiceAcl

    (2)    更新jobtracker相关属性:bin/hadoopmradmin –refreshServiceAcl

    2、 调度器配置

    修改mapred-site.xml

    <property>  
           <name>mapred.jobtracker.taskScheduler</name>  
           <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value>  
    </property>  

    启用Access Contol onJob Queues需选择一个支持多队列管理的调度器,所以mapred.jobtracker.taskScheduler只能为CapacityTaskScheduler或FairScheduler。

    在mapred-site.xml里配置队列,如:

    <property>  
     <name>mapred.queue.names</name>  
     <value>default,hadoop,stat,query</value>  
    </property>  

    3、 Access Contol on JobQueues配置

    Access Contol on Job Queues开关在mapred-site.xml,如下:

    <property>  
     <name>mapred.acls.enabled</name>  
      <value>true</value>  
    </property>   

    mapred.acls.enabled=true开启,为false关闭。

             具体ACL属性在mapred-queue-acl.xml里,如:

    <property>  
      <name>mapred.queue.stat.acl-submit-job</name>  
      <value>user1,user2 group1,group2</value>  
    </property>  

    表示user1,user2和group1,group2可以向stat queue提交job。

    4、 DFS permission配置

    修改hdfs-site.xml 

    <property>  
      <name> dfspermission </name>  
      <value>true</value>  
    </property>  

    dfs.permission是否开启文件权限验证,true开启,false不进行读写权限验证。(注:dfs.permission开启与否dfs permission信息都不会改变后丢失,chown、chgrp、chmod操作也始终会验证权限,dfspermission信息只在namenode里,并不在danode里与blocks关联)

    用chown、chgrp、chmod修改文件/目录的属主、属组和权限。

    补:Job ACL

    Job ACL默认值配置在mapred-site.xml里,如下:

    复制代码
    <property>  
      <name>mapreduce.job.acl-view-job</name>  
      <value>user1</value>  
    </property>  
    <property>  
      <name>mapreduce.job.acl-modify-job</name>  
      <value>user1</value>  
    </property>  
    复制代码

    表示,默认情况下,user1用户拥有job的查看和修改权限。 

    Job提交者可以指定mapreduce.job.acl-view-job和mapreduce.job.acl-modify-job值,提交时指定的值会覆盖默认值。

    Job提交者、superuser、集群管理员(mapreduce.cluster.administrators)、JobQueue管理员始终拥有该权限。

    转自 http://blog.csdn.net/cheersu/article/details/8080162

    参考资料:

    《Service Level Authorization Guide》

    《Cluster Setup》

    《HDFS Permissions Guide》

    《hadoop权限管理》

  • 相关阅读:
    webapp之路--meta标签format-detection、apple-mobile-web-app-capable
    js 进行年月日时间差计算
    JS手机邮箱身份证号码的正则验证以及通过身份证号码获取出生年月日
    react setState()方法可以只修改一个对象的部分属性
    js获取当前时间格式YYYY/MM/DD
    提高CSS开发能力的技巧集
    JavaScript专业规则12条
    为什么大型网站前端使用PHP后台逻辑用Java
    Cookie与Session的区别
    2016年JavaScript技术栈展望
  • 原文地址:https://www.cnblogs.com/hanxiaohui/p/8526997.html
Copyright © 2011-2022 走看看