hadoop的用户代理机制

原创 2015年11月18日 11:28:03


官方文档解读

参考Proxy user - Superusers Acting On Behalf Of Other Users

在hadoop的core-site.xml中进行如下设置, 用户“super”就可以代理主机host1和host2上属于组group1和group2的所有用户。

<property>
     <name>hadoop.proxyuser.super.hosts</name>
     <value>host1,host2</value>
   </property>
   <property>
     <name>hadoop.proxyuser.super.groups</name>
     <value>group1,group2</value>
   </property>

当然,也可以进行更松弛的设置。如下所示表示用户“oozie”可以代理所有主机上的所有用户。

  <property>
    <name>hadoop.proxyuser.oozie.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.proxyuser.oozie.groups</name>
    <value>*</value>
  </property>

代理机制的验证

为了搞清楚“代理”的具体含义,参考Hadoop 2.0中用户安全伪装/模仿机制实现原理,我们做如下测试。


测试1

  1. 在hadoop的core-site.xml中配置好代理用户。不过,该文件中默认有hdfs代理所有用户的配置,如下所示。那么,后续步骤就以hdfs为代理用户。

    <property>
      <name>hadoop.proxyuser.hdfs.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hdfs.groups</name>
      <value>*</value>
    </property>
    
  2. 切换到hdfs,声明要代理的用户为ly

    hdfs@lyhadoop:~$ export HADOOP_PROXY_USER=ly
    
  3. 提交作业

    hdfs@lyhadoop:~$ hadoop jar /home/ly/wordcount.jar /user/ly/input/input.txt /user/ly/output22
    
  4. 查看作业界面

这里写图片描述

虽然此时的登录者为“hdfs”,但作业界面上显示的提交者为“ly”。那是因为我们在第2步设置了要被代理的用户为“ly”。

以上测试说明: hdfs提交了ly的作业,最终作业界面显示的提交者为“ly”。但hdfs提交作业的时候是使用的自己的身份还是切换到了ly,还不清楚,下面通过测试2进行验证。


测试2

  1. 设置hdfs的文件权限为ly不可访问

    hdfs@lyhadoop:~$ hadoop fs -chmod 750 /user/hdfs
    
  2. 查看hdfs的文件

    hdfs@lyhadoop:~$ hadoop fs -ls /user/hdfs/input
    
  3. 报错如下,

    ls: Permission denied: user=ly, access=EXECUTE, inode="/user/hdfs":hdfs:supergroup:drwxr-x---

以上测试说明:hdfs提交用户ly的hadoop命令时,切换到了该用户。


代理机制的作用

以oozie为例,系统安装Oozie时,会同时创建相应用户–oozie。启动Oozie服务时,需要切换到该用户启动。以下分两种情况讨论Oozie中提交作业的流程。


不设置oozie代理

考虑到Oozie是用户oozie启动的,所以如果不设置oozie代理用户,普通用户在Oozie中提交的作业都会以oozie的身份执行,如下所示

oozie-noproxy


设置oozie代理

设置oozie代理用户后,普通用户提交作业时,oozie会切换到该用户执行作业,如下所示,

oozie-proxy


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>

总结

以用户ops使用代理用户oozie提交作业为例,当用户ops提交作业时,oozie会接管该作业,负责作业资源的申请及监管。

但其中若遇到读取HDFS文件时,要判断是否有使用该文件的权限,此时使用的用户是ops,作业运行完后,作业列表中显示该作业的用户也是ops。当然,除此之外,剩下的工作都由oozie负责,以体现“代理”的作用。

hadoop2.2安装配置日志(完全分布式)

在五一放假三天,用了整个假期的时间去
  • foart
  • foart
  • 2014年05月03日 21:03
  • 2845

设置Hadoop用户以便访问任何HDFS文件

Hadoop分布式文件系统实现了一个和POSIX系统类似的文件和目录的权限模型。每个文件和目录有一个所有者(owner)和一个组(group)。文件或目录对其所有者、同组的其他用户以及所有其他用户分别...
  • LW_GHY
  • LW_GHY
  • 2016年05月21日 13:11
  • 4082

Hadoop 2.0中用户安全伪装/模仿机制实现原理

本文将从用户伪装(impersonate,翻译成“模仿”也许更好些)角度介绍Hadoop安全机制,用户伪装机制使得Hadoop支持类似于linux “sudo”的功能,即用户A以用户B的身份执行功能。...
  • javastart
  • javastart
  • 2015年09月18日 17:09
  • 564

hadoop集群Restful接口的使用

一、介绍        在通常情况下,我们使用HDFS的command命令去查看hdfs上的文件,或者使用默认的hadoop的web管理器查看,从hadoop0.2.23后,hadoop设计了一套Re...
  • u011518678
  • u011518678
  • 2015年08月31日 15:16
  • 2463

proxyUSER

  • 2008年01月04日 21:52
  • 1.39MB
  • 下载

Alex 的 Hadoop 菜鸟教程: 第18课 用Http的方式访问HDFS - HttpFs 教程

HttpFs 有啥用? HttpFs可以干这两件事情: 1.通过HttpFs你可以在浏览器里面管理HDFS上的文件 2.HttpFs还提供了一套REST 风格的API可以用来管理HDFS。其实很简单的...
  • nsrainbow
  • nsrainbow
  • 2015年02月10日 11:17
  • 10250

oozie在hadoop中配置代理

  • 2013年09月20日 22:53
  • 2KB
  • 下载

mysql proxy user代理用户(伪装用户)

参考懒得去死的博客,网址:http://blog.csdn.net/yueliangdao0608/article/details/7579836 自Mysql 5.5以来新增proxy代理用户...
  • zyzn1425077119
  • zyzn1425077119
  • 2017年04月20日 11:38
  • 524

在程序中指定Spark和Hadoop的用户

Spark和Hadoop都被设计为多用户共享使用,每个用户程序都关联一个用户,Spark和Hadoop根据该用户授予用户程序对集群相关资源的访问权限。如果是强认证方式,每个用户程序关联的用户不可随意指...
  • wyc09
  • wyc09
  • 2013年11月15日 12:19
  • 6213

Hadoop Yarn 安装

为了构建基于Yarn体系的Spark集群,先要安装Hadoop集群,为了以后查阅方便记录了我本次安装的具体步骤。...
  • zlcd1988
  • zlcd1988
  • 2014年06月30日 16:48
  • 2353
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hadoop的用户代理机制
举报原因:
原因补充:

(最多只允许输入30个字)