1.用户代理分为host group user三个方面,分别表示哪些主机上的superuser 、模拟哪些组、模拟哪些用户
修改core-site.xml
<property>
<name>hadoop.proxyuser.hive.hosts</name>
<value>hadoop1,hadoop2</value>
</property>
<property>
<name>hadoop.proxyuser.hive.groups</name>
<value>hadoop</value>
</property>
<property>
<name>hadoop.proxyuser.hive.users</name>
<value>bob,joe</value>
</property>
上述三个配置分别表示,hadoop1 hadoop2上的用户hive可以以superuser的方式代理hadoop组的任务用户,还可以代理bob和joe用户。
hive指的是运行hive的用户,可以是任何名称,例如zhs。如果不开启,代表操作hadoop的用户都是hive,如果开启,例如以aa用户连接hive,创建表,在hdfs上显示的是aa这个用户在操作,且需要aa这个用户拥有hdfs的操作权限。这个配置通常和
hive-site.xml中的
hive.server2.enable.doAs设置成false则,yarn作业获取到的hiveserver2用户都为hive用户。
设置成true则为实际的用户名
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
一起使用。
2.以oozie为例,系统安装Oozie时,会同时创建相应用户–oozie。启动Oozie服务时,需要切换到oozie用户启动。以下分两种情况讨论Oozie中提交作业的流程。
不设置oozie代理
考虑到Oozie是用户oozie启动的,所以如果不设置oozie代理用户,普通用户在Oozie中提交的作业都会以oozie的身份执行,如下所示
设置oozie代理
设置oozie代理用户后,普通用户提交作业时,oozie会切换到该用户执行作业,如下所示,
hadoop中的默认设置
hadoop的core-site.xml中,针对oozie代理用户的默认设置如下,表示oozie会代理所有主机上的所有用户。
<property>
<name>hadoop.proxyuser.oozie.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.oozie.groups</name>
<value>*</value>
</property>
3 总结
以用户ops使用代理用户oozie提交作业为例,当用户ops提交作业时,oozie会接管该作业,负责作业资源的申请及监管。
但其中若遇到读取HDFS文件时,要判断是否有使用该文件的权限,此时使用的用户是ops,作业运行完后,作业列表中显示该作业的用户也是ops。当然,除此之外,剩下的工作都由oozie负责,以体现“代理”的作用。
如果集群运行在安全模式下,超级oozie用户必须有kerberos凭据才能代理另一个用户。
参考链接:
https://www.cnblogs.com/skyrim/p/7455259.html
https://blog.csdn.net/u012948976/article/details/49904675