• Hadoop Proxy User


    Super-User
    谁启动NameNode,谁就是super-user。 super-user可以执行任意操作,权限校验从不失败。HDFS super-user 不必是NameNode 主机上的super-user,也不是说集群内的说有主机都需要有这个super-user。
    如果在个人电脑上实验运行HDFS,为方便起见无须任何配置该用户即成为安装的super-user。

    另外,管理员还可以通过配置参数标识一个特定组。该组内的成员也是super-users。

    介绍

    本文档描述了superuser如何替其他用户提交任务。

    案例

    下面的代码范例是根据如下场景。

    superuser 用户名 super,想替用户 joe提交任何和访问hdfs。superuser 有 kerberos 凭据,但是用户 joe 没有。任务需要以用户joe运行,对namenode上任何文件的访问也必须以用户joe完成。需要用户joe可以借助super的kerberos凭据建立连接连到namenode或job tracker。换个说法,super正在 impersonating (模拟)用户joe

    有些产品需要该功能,比如Apache Oozie。

    代码范例

    范例中,super的凭据用于登录,给用户joe创建一个proxy user ugi对象。操作以*proxy user ugi对象的doAs方法进行。

        ...
        //Create ugi for joe. The login user is 'super'.
        UserGroupInformation ugi =
                UserGroupInformation.createProxyUser("joe", UserGroupInformation.getLoginUser());
        ugi.doAs(new PrivilegedExceptionAction<Void>() {
          public Void run() throws Exception {
            //Submit a job
            JobClient jc = new JobClient(conf);
            jc.submitJob(conf);
            //OR access hdfs
            FileSystem fs = FileSystem.get(conf);
            fs.mkdir(someFilePath);
          }
        }
    

    配置

    你可以使用属性 hadoop.proxyuser.$superuser.hostshadoop.proxyuser.$superuser.groupshadoop.proxyuser.$superuser.users 来配置 proxy user。

    通过在 core-site.xml 作如下设置,superuser 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>
    

    如果这些配置不存在,impersonation(模拟)将不被允许,连接会失败。

    如果安全要求不高,通配符*可以用于来自任何主机或任何用户的 impersonation (模拟)。比如,如下core-site.xml 的设置,来自任意主机的用户 oozie 可以 impersonate (模拟)属于任意组的任何用户。

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

    hadoop.proxyuser.$superuser.hosts 接受IP地址列表,CIDR格式的IP地址范围,以及主机名。比如,如下设置,来自10.222.0.0-15 and 10.113.221.221主机的用户 super 可以 impersonate(模拟) user1user2

       <property>
         <name>hadoop.proxyuser.super.hosts</name>
         <value>10.222.0.0/16,10.113.221.221</value>
       </property>
       <property>
         <name>hadoop.proxyuser.super.users</name>
         <value>user1,user2</value>
       </property>
    

    注意事项

    如果集群运行于 Secure Mode,superuser 必须拥有 kerberos 凭据来可以 impersonate (模拟)其他用户。

    这个功能不能使用 delegation tokens (委派令牌)。superuser 不能将它的delegation token添加到proxy user ugi,因为这会允许proxy user可以以superuser的权限连接到服务。

    无论如何,如果superuser不想把 delegation token 给 joe,它必须先 impersonate(模拟)joe并给joe获取delegation token ,就如上范例代码,然后将其添加到 ugi of joe。这样, delegation token 就可以被joe 使用了。

     
     
    转自:https://www.jianshu.com/p/c7e00c0d206f 
  • 相关阅读:
    test!
    Visual Studio 中的单元测试 UNIT TEST
    Jquery结合div+css实现文字间断停顿向上滚动效果
    asp.net中使用HttpWebRequest发送上传文件
    分享一个可以灵活控制的实现Javascript滚动效果的程序
    VeryCodes.Log让日志记录和读取变的更简单
    实现MyXLS设置行高的功能
    设计模式学习笔记建造者模式
    设计模式学习笔记原型模式
    设计模式学习笔记模板方法
  • 原文地址:https://www.cnblogs.com/javalinux/p/15048000.html
Copyright © 2020-2023  润新知