更新时间:2025-07-25 GMT+08:00
分享

配置Yarn通过Guardian访问OBS

参考配置Guardian服务不启用Ranger OBS路径鉴权配置Guardian服务启用Ranger OBS路径鉴权完成Guardian对接OBS后,即可在集群客户端执行Yarn任务访问OBS。

前提条件

如果参考配置Guardian服务启用Ranger OBS路径鉴权完成Guardian对接OBS,还需参考Ranger权限配置在Ranger中为组件操作用户赋予OBS路径的“Read”和“Write”权限。

Yarn对接OBS

  1. 以客户端安装用户登录安装了Yarn客户端的节点。
  2. 执行以下命令,切换到客户端安装目录。

    cd 客户端安装目录

  3. 执行以下命令配置环境变量。

    source bigdata_env

  4. 如果集群开启了Kerberos认证,执行以下命令进行用户认证,该用户需具有OBS目录的读写权限。未开启Kerberos认证的集群无需执行用户认证。

    kinit HDFS组件操作用户

  5. 在Yarn命令行显式添加要访问的OBS文件系统。

    • 使用以下命令访问OBS文件系统。
      hdfs dfs -ls obs://OBS并行文件系统名称/路径
    • 使用以下命令创建OBS文件系统下的目录:
      hdfs dfs -mkdir obs://OBS并行文件系统名称/hadoop1
    • 执行以下Yarn任务访问OBS:
      yarn jar 客户端安装目录/HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi -Dmapreduce.job.hdfs-servers=NAMESERVICE -fs obs://OBS并行文件系统名称 1 1

      其中“NAMESERVICE”为HDFS文件系统中的NameService,默认为“hdfs://hacluster”,如有多个NameService, 以“,”分隔。

      例如:

      yarn jar /opt/hadoopclient/HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi -Dmapreduce.job.hdfs-servers=hdfs://hacluster -fs obs://bucketname 1 1
    • 执行以下命令写入数据到OBS:
      yarn jar 客户端安装目录/HDFS/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar teragen 100  obs://OBS并行文件系统名称/hadoop1/teragen1
    • 执行以下命令将OBS下的数据复制到HDFS:
      hadoop distcp obs://OBS并行文件系统名称/hadoop1/teragen1 /tmp

修改OBS客户端日志级别

OBS文件系统打印大量日志可能导致读写性能受影响,可通过调整OBS客户端日志级别优化,日志调整方式如下:
  1. 切换至“hadoop”目录下:
    cd 客户端安装目录/HDFS/hadoop/etc/hadoop
  2. 编辑“log4j.properties”文件:
    vi  log4j.properties

    在文件中添加以下OBS日志级别配置,并保存:

    log4j.logger.org.apache.hadoop.fs.obs=WARN
    log4j.logger.com.obs=WARN
  3. 可执行以下命令查看:
    tail -4 log4j.properties

    查看到的结果如图1所示,表示修改日志级别成功。

    图1 添加OBS日志级别

Ranger权限配置

  1. 登录MRS集群Manager界面,选择“系统 > 权限 > 用户组 > 添加用户组”,创建一个空角色的用户组,例如“obs_hadoop1”。

    登录集群Manager界面请参考访问MRS集群Manager

  2. 选择“系统 > 权限 > 用户 > 添加用户”,创建一个只关联用户组“obs_hadoop1”,关联角色“default”的用户,例如“hadoopuser1”。
  3. 使用rangeradmin用户登录Ranger管理页面。
  4. 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
  5. 单击“Add New Policy”,为步骤 1新建的用户组添加相应OBS路径的“Read”和“Write”权限。

    例如,为用户组“obs_hadoop1”添加“obs://OBS并行文件系统名称/hadoop1”的“Read”和“Write”权限:

    图2 为新建用户组赋予OBS路径读和写的权限

    对接OBS后,如需通过Ranger配置组件关于OBS相关路径的权限策略,需确保OBS服务已开启AccessLabel功能,若未开启,需手动开启,详细操作请联系OBS服务运维人员。

相关文档