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

配置Flink通过Guardian访问OBS

参考配置Guardian服务不启用Ranger OBS路径鉴权配置Guardian服务启用Ranger OBS路径鉴权完成Guardian对接OBS后,即可在Flink任务中访问OBS并行文件系统并运行作业,本章节以通过提交一个Flink WordCount作业为例进行介绍。

前提条件

  • 由于Flink作业是On Yarn运行,在配置Flink对接OBS文件系统之前需要确保Yarn对接OBS文件系统功能是正常的。
  • OBS并行文件系统名称/文件名称:OBS文件路径需写至目录层级。
  • 如果参考配置Guardian服务启用Ranger OBS路径鉴权完成Guardian对接OBS,还需参考Ranger权限配置在Ranger中为组件操作用户赋予OBS路径的“Read”和“Write”权限。

Flink对接OBS

  1. 使用安装客户端的用户登录Flink客户端安装节点。

    下载并安装集群客户端的具体操作,请参考安装MRS集群客户端

  2. 执行如下命令初始化环境变量。

    source 客户端安装目录/bigdata_env

  3. 配置好Flink客户端,具体配置参考从零开始使用Flink的步骤1至步骤5。
  4. 启动session。

    • 普通集群(未开启Kerberos认证)
      yarn-session.sh -nm "session-name" -d
    • 安全集群(开启Kerberos认证)
      • “flink.keystore”“flink.truststore”文件路径为相对路径时:

        在“ssl”的同级目录下执行如下命令启动session,其中“ssl/”是相对路径。

        切换到“conf”目录:

        cd 客户端安装目录/Flink/flink/conf/

        启动session:

        yarn-session.sh -t ssl/ -nm "session-name" -d

        session启动成功:

        ...
        Cluster started: Yarn cluster with application id application_1624937999496_0017
        JobManager Web Interface: http://192.168.1.150:32261
      • “flink.keystore”“flink.truststore”文件路径为绝对路径时,执行如下命令启动session:

        切换到“conf”目录:

        cd 客户端安装目录/Flink/flink/conf/

        启动session:

        yarn-session.sh -nm "session-name" -d

  5. 如果集群启用了Kerberos认证,使用以下命令进行用户认证,如果当前集群未启用Kerberos认证,则无需执行此命令。

    kinit 用户名

  6. 在Flink命令行显式添加要访问的OBS文件系统,并执行分析程序。

    1. 在“/tmp/test”目录下创建“test”文件:
      echo -e 'test' >/tmp/test
    2. 在OBS并行文件系统中创建存放“test”文件的目录:
      hdfs dfs -mkdir -p obs://并行文件系统名称/tmp/flinkjob
    3. 将“test”文件上传至OBS并行文件系统中:
      hdfs dfs -put /tmp/test/ obs://并行文件系统名称/tmp/flinkjob/
    4. 执行以下命令运行“WordCount.jar”:
      flink run 客户端安装目录/Flink/flink/examples/batch/WordCount.jar -input obs://并行文件系统名称/tmp/flinkjob/test -output obs://并行文件系统名称/tmp/flinkjob/output

  7. 登录OBS控制台,在6.d配置的输出路径下即可查看“WordCount.jar”运行结果。

Ranger权限配置

  1. 登录MRS集群Manager界面。

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

  2. 选择“系统 > 权限 > 用户组 > 添加用户组”。
  3. 创建一个空角色的用户组,例如,名称为“obs_flink”,并将该用户组绑定给对应用户。
  4. 使用rangeradmin用户登录Ranger管理页面。
  5. 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。
  6. 单击“Add New Policy”,为3新建的用户组添加相应OBS路径的“Read”和“Write”权限,OBS目录若不存在则需要提前创建,且不允许带通配符*

    图1 为Flink用户组新增OBS路径读和写的权限

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

相关文档