Hadoop平台会集成不同的组件,如hdfs、yarn、hive等,不同用户的操作权限不同,除了hdfs是超级用户以外,其它用户都默认是普通用户权限,但是有些场景之下,我们希望普通具有具有hdfs的超级权限,如我oozie中调试 shell 任务,其中shell调用sqoop从数据中导入数据到hive中,其后会通过Yarn来执行MapReduce这么一个过程,不过Yarn在执行的时候,会在hdfs的/user/yarn目录创建权限为700的staging文件,然后在清除在staging文件的时候,又使用执行oozie的用户去执行清除,这个时候就删除文件没有权限报错了,即使这个时候换超级用户hdfs去执行也是一样的错误:
遇到这种情况,就只有使用yarn这个用户来执行这个任务了,因为staging为700的权限,并且是动态生成的,因而不能够通过对staging文件做权限调整,但是由于还要操作hive等其它组件,yarn默认的权限又不够,所以这种场景之下就需要将yarn用户加入到超级组supergroup中。
Hadoop本身的用户和组的关系,都是同步 Linux 系统中的,但是HDFS和Linux的超级用户组又有一点差别,HDFS中的超级用户组是supergroup,但是Linux中默认是没有supergoup这个组,这个时候只需要在Linux中增加supergroup这个组,然后将要在HDFS中加入到supergroup中的用户加到这个组中,再同步HDFS用户和组即可。
操作步骤如下:
1、在Linux执行如下命令增加supergroup
groupadd supergroup
2、如将用户yarn增加到supergroup中,再执行:
usermod -a -G supergroup yarn
3、同步系统的权限信息到HDFS:
su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"
4、验证
1) 将/user/hdfs目录的权限由700,修改为770
su - hdfs -s /bin/bash -c "hadoop fs -chmod 770 /user/hdfs"
2) 通过加到supergroup组中的yarn用户去列这个目录:
su - yarn -s /bin/bash -c "hadoop fs -ls /user/hdfs"
可成功列出目录即表示操作成功。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- python中将list转为dict
- Spring中将header头转换为参数
- 数组 – 如何在Swift中将数组拆分成两半?
- postgresql – 在postgres中将表列名更改为大写
- 如何在Java 8中将List转换为Map?
- 如何在Kubernetes中将Envoy用作负载均衡器
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C#入门经典
[美] Karli Watson、Christian Nagel / 齐立波、黄静 / 清华大学出版社 / 2008-12 / 118.00元
这是一本成就无数C#程序员的经典名著,厚而不“重”,可帮助您轻松掌握C#的各种编程知识,为您的职业生涯打下坚实的基础,《C#入门经典》自第1版出版以来,全球销量已经达数万册,在中国也有近8万册的销量,已经成为广大初级C#程序员首选的入门教程,也是目前国内市场上最畅销的C#专业店销书,曾两次被CSDN、《程序员》等机构和读者评选为“最受读者喜爱的十大技术开发类图书”!第4版面向C#2008和.NET......一起来看看 《C#入门经典》 这本书的介绍吧!