1、 配置Service Level Authorization
修改core-site.xml
- <property>
- <name>hadoop.security.authorization</name>
- <value>true</value>
- </property>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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管理员始终拥有该权限。