使用DLF文件目录访问OSS数据

DLF文件目录与实时计算Flink相结合,可以创建一个基于OSS路径的存储卷,并将其挂载至Linux文件系统上,从而实现更灵活的数据处理流程。通过DLF的文件目录功能,您可以结构化的方式组织和访问存储在OSS中的数据,有效管理数据湖内的资源。无论是手动触发更新还是根据预设的目录更新频率自动检测,DLF都能确保OSS中挂载目录下的所有文件变更(如新增、删除或修改)及时同步至DLF文件目录中。本文为您详细介绍如何将DLF文件目录挂载至EMR集群。

前提条件

  • 已开通OSS并创建存储空间,详情请参见创建存储空间

  • 已创建DLF 2.0 Paimon类型的数据目录,详情请参见新建数据目录

  • 已创建Flink全托管工作空间,引擎版本须为VVR 8.0.9及以上,详情请参见开通实时计算Flink版

  • 已创建与DLF同地域的ECS实例或已创建EMR集群,且需开启挂载公网,详情请参见创建集群。本文以EMR集群为例。

    说明

    如果您未开启该功能,创建后您想使用公网IP地址访问,请在ECS上申请开通公网IP地址,详情请参见弹性公网IP中的申请EIP的内容。

  • JindoSDK版本需为6.5.6及以上、6.7.8及以上或6.8.0及以上。

步骤一:配置Flink访问OSS的鉴权信息

  1. 登录实时计算控制台

  2. 单击目标工作空间操作列的控制台,进入相应工作空间。

  3. 单击左侧导航栏的运维中心 > 配置管理,进入配置管理页面。

  4. 作业默认配置页签,单击批作业。在其他配置中,配置以下信息。

    fs.oss.bucket.<your_BucketName>.accessKeyId: <accessKeyId>
    fs.oss.bucket.<your_BucketName>.accessKeySecret: <accessKeySecret>

    参数名称

    描述

    your_BucketName

    OSS Bucket名称。您可在OSS管理控制台上查看。

    accessKeyId

    AccessKey。创建AccessKey详情请参见创建AccessKey

    accessKeySecret

    AccessKey Secret。创建AccessKey Secret详情请参见创建AccessKey

步骤二:新建并更新文件目录

  1. 新建文件目录,详情请参见新建文件目录

  2. 文件目录页签,单击文件目录名称,进入文件目录概览页。

  3. 单击手动触发更新,可对文件目录进行手动更新。

    更新状态更新完成时,可进行下一步,复制文件路径待后续使用。

    image

    说明

    如果文件目录更新失败,您可进入该文件目录所绑定计算资源的Flink全托管工作空间,在运维中心 > 作业运维中查看批作业运行日志。详情请参见查看启动和运行日志

(可选)步骤三:RAM用户授权

重要

如果是RAM用户(子账号),需执行以下操作进行授权。

  1. 使用阿里云账号登录RAM控制台

  2. 在左侧菜单栏,单击身份管理 > 角色,搜索并单击AliyunECSInstanceForEMRRole角色,进入角色详情页

  3. 在权限管理页签,单击新增授权权限策略选择AliyunDLFFullAccess,单击确认新增授权

步骤四:更新JindoSDK版本

说明

如果EMR集群为EMR-5.17.4、EMR-5.18.0及以上版本,可跳过该步骤。

  1. 登录EMR集群Master节点,可参考登录集群

  2. 执行以下命令,更新JindoSDK版本。

    说明

    本文以JindoSDK 6.5.6版本,Linux x86平台为例。

    1. 切换到emr-user用户,下载并解压jindosdk-patches.tar.gz包到/home/emr-user目录下

      su - emr-user
      cd /home/emr-user/
      wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/resources/emr-taihao/jindosdk-patches.tar.gz
      tar zxf jindosdk-patches.tar.gz
    2. 下载JindoSDK软件包至解压后的jindosdk-patches目录下。

      cd jindosdk-patches
      wget https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/release/6.5.6/jindosdk-6.5.6-linux.tar.gz
      ls -l

      image

    3. 配置升级节点信息。

      • 手动配置

        编辑patch包中的hosts文件,添加集群所有节点的HostName,如master-1-1或core-1-1,文件内容以行分割。

        vim hosts

        例如,本文hosts文件内容如下。

        image

      • 自动填充节点信息

        cat  /usr/local/taihao-executor-all/data/cache/.cluster_context | jq --raw-output '.nodes[].hostname.alias[]' > hosts
        说明

        如果自动填充节点信息时,HostName获取失败,需手动配置进行补全。

    4. 执行升级。例如,升级集群中的JindoSDK至6.5.6版本。

      ./apply_all.sh 6.5.6

      返回如下提示信息,升级完成。

      image

步骤五:挂载文件目录

  1. 执行以下命令,切换到root用户,更新配置jindosdk.cfg。

    sudo su -
    cd /etc/taihao-apps/jindosdk-conf/
    vim jindosdk.cfg
    1. 在jindosdk配置中,修改为dls相关配置。

      [common]
      logger.dir = /var/log/emr/jindosdk
      logger.level = 2
      logger.verbose = 0
      logger.sync = true
      logger.jnilogger = true
      logger.consolelogger = false
      logger.cleaner.enable = true
      
      [jindosdk]
      fs.dls.provider.endpoint = ECS_ROLE
      fs.dls.provider.format = JSON
      fs.dls.endpoint = dlfnext-vpc.[regionId].aliyuncs.com

      参数名称

      描述

      logger.sync

      用于设置日志记录是否为同步模式。取值如下:

      • false(默认):表示使用异步模式(日志可能被缓冲后再批量写入)。

      • true:表示开启同步模式(即每条日志都会立即写入目标)。

      fs.dls.provider.endpoint

      固定取值为:ECS_ROLE

      fs.dls.provider.format

      固定取值为:JSON

      fs.dls.endpoint

      DLF VPC网络Endpoint。详情请参见地域及访问域名

    2. (可选)如果访问的不是本账号所属的OSS Bucket,则需要额外配置对应Bucket的AK/SK。

      fs.dls.data.endpoint = oss-cn-[regionId]-internal.aliyuncs.com
      fs.dls.accessKeyId = <accessKeyId>
      fs.dls.accessKeySecert = <accessKeySecert>

      参数名称

      描述

      fs.dls.data.endpoint

      OSS内网Endpoint。详情请参见OSS地域和访问域名

      fs.dls.accessKeyId

      AccessKey。创建AccessKey详情请参见创建AccessKey

      fs.dls.accessKeySecert

      AccessKey Secret。创建AccessKey Secret详情请参见创建AccessKey

  2. 创建挂载目录,挂载DLF文件目录。

    mkdir -p /mnt/volume
    jindo-fuse /mnt/volume/ -oauto_unmount -odirect_io -oattr_timeout=0 -oentry_timeout=0 -onegative_timeout=0 -oro -ouri=dls://clg-xxx/volume/vol-xxx/
    重要

    -ouri后的文件路径,需替换为步骤二中复制的dls文件路径。

    返回如下提示信息,挂载完成。

    image

步骤六:读取文件

执行以下命令,进入挂载目录后,您可以查看到OSS路径下的文件列表。

cd /mnt/volume/
ll
说明

如果OSS路径指向的是一个空文件夹,则挂载目录中将不会显示任何内容。

返回结果如下图。

image

可通过cat命令查看文件内容。

(可选)步骤七:新增文件

  1. 登录OSS管理控制台,在相应的OSS路径下新增文件,详情请参见简单上传

    image

  2. 登录数据湖构建控制台,进入目标数据目录概览页,单击手动触发更新,更新文件目录,详情请参见步骤二:更新文件目录

  3. 更新完成后,重新读取文件,可看到新增的文件。详情请参见步骤六:读取文件

    image

常见问题

Q:挂载成功后,进入挂载目录,查询不到挂载的文件,在哪查看日志信息?

A:您可在步骤五jindosdk.cfg中配置的logger.dir路径下,查看 jindo-fuse.LOG日志文件。