hadoop权限操作
新增用户:
useradd zyl1
一、将新建用户zyl1赋予hdfs用户权限
执行查询hdfs没有权限:Permission denied
groups hbase (查看用户所属组)
[[email protected] ~]# hadoop fs -ls /hbase
ls: Permission denied: user=zyl1, access=READ_EXECUTE, inode="/hbase":hbase:hbase:drwx------
[[email protected] ~]#
授权过程:
查看cm发现hdfs的超级用户组是supergroup,就要在服务器上新建用户组supergroup,并将用户zyl1加入该组
新增supergroup组
[[email protected] ~]# groupadd supergroup
将zyl1用户加入组supergroup
[[email protected] ~]# gpasswd -a zyl1 supergroup
再次查看目录,优先权了
[[email protected] ~]# hadoop fs -ls /hbase
Found 9 items
drwxr-xr-x - hbase hbase 0 2017-05-20 10:47 /hbase/.tmp
drwxr-xr-x - hbase hbase 0 2017-05-20 10:47 /hbase/WALs
drwxr-xr-x - hbase hbase 0 2017-05-19 11:36 /hbase/archive
drwxr-xr-x - hbase hbase 0 2017-04-18 14:57 /hbase/corrupt
drwxr-xr-x - hbase hbase 0 2017-04-13 19:34 /hbase/data
drwxr-xr-x - hbase hbase 0 2017-05-19 09:59 /hbase/dop
-rw-r--r-- 3 hbase hbase 42 2017-04-13 19:34 /hbase/hbase.id
-rw-r--r-- 3 hbase hbase 7 2017-04-13 19:34 /hbase/hbase.version
drwxr-xr-x - hbase hbase 0 2017-05-20 10:48 /hbase/oldWALs
二、将Kerberos认证的hbase赋予zyl1
1、查看所有用户主体:
echo root | kadmin -p root/admin -q "list_principals"
2、创建主体[email protected]
echo root | kadmin -p root/admin -q "addprinc -randkey [email protected]"
3、生成keytab文件
echo root | kadmin -p root/admin -q "xst zyl1"
4、生成keytab文件默认:/etc/krb5.keytab(该文件会被下一次生成的覆盖)
保存到指定位置
cp /etc/krb5.keytab /root/zyl1.keytab
5、切换用户:
kinit -kt /etc/zyl1.keytab [email protected]
kinit -kt /var/run/cloudera-scm-agent/process/478-hbase-MASTER/hbase.keytab hbase/[email protected]
6、查看目前机器的用户:
klist
三、yarn权限
1、执行mr验证用户是否有权限
hadoop jar WordCountMR_fat.jar /tmp/wordcount.txt /tmp/zyl1
解决方法:
为每一个User Account创建Kerberos Principal当集群运行Kerberos后,每一个Hadoop user都必须有一个principal或者keytab来获取Kerberos credentials,这样才能访问集群并使用Hadoop的服务。
也就是说,如果Hadoop集群存在一个名为[email protected]的principal,那么在集群的每一个节点上应该存在一个名为zyl1 的Linux用户。同时,在HDFS中的目录/user要存在相应的用户目录(即/user/zyl1 ),且该目录的owner和group都要是zyl1。
(Linux user 的 user id 要大于等于1000,否则会无法提交Job。例如,如果以hdfs(id为496)的身份提交一个job,就会看到以下的错误信息: Requested user hdfs is not whitelisted and has id 496,which is below the minimum allowed 1000 )