JindoCache加速OSS-HDFS透明缓存

本文以JindoCache支持阿里云OSS-HDFS透明缓存加速的使用方式为例,利用集群本身的存储资源缓存OSS-HDFS文件,以加速作业对OSS-HDFS的访问。

前提条件

操作步骤

  1. 选择缓存策略。

    JindoCache使用CacheSet来管理不同的缓存策略,您可以根据实际需求为不同的路径选择不同的缓存策略,并支持一个或多个CacheSet。

    1. 登录集群,详情请参见登录集群

    2. 新增cacheset.xml文件。

      本文示例中的cacheset.xml文件位于/path目录下。

      <?xml version="1.0" encoding="UTF-8"?>
      <cachesets>
          <cacheset>
              <name>name1</name>
              <path>oss://emr-test/dir1</path>
              <cacheStrategy>DISTRIBUTED</cacheStrategy>
              <metaPolicy>
                  <type>ALWAYS</type>
              </metaPolicy>
              <readPolicy>CACHE_ASIDE</readPolicy>
              <writePolicy>WRITE_AROUND</writePolicy>
          </cacheset>
          <cacheset>
              <name>name2</name>
              <path>oss://emr-test/dir2</path>
              <cacheStrategy>DHT</cacheStrategy>
              <metaPolicy>
                  <type>ONCE</type>
              </metaPolicy>
              <readPolicy>CACHE_ASIDE</readPolicy>
              <writePolicy>WRITE_AROUND</writePolicy>
          </cacheset>
      </cachesets>

      参数

      说明

      示例

      name

      CacheSet策略的名称,必须是唯一的,重复的CacheSet名称会导致覆盖。

      name1

      path

      需要设定策略的父路径,其子路径都会使用该CacheSet的策略。

      oss://emr-test/dir1

      cacheStrategy

      缓存策略,支持DISTRIBUTED和DHT(Distributed Hash Table)两种。其中,DHT适用于小文件场景只读加速策略。

      您可以根据需求选择其中一种适合的策略。

      DISTRIBUTED

      metaPolicy

      元数据缓存策略,支持ALWAYS和ONCE两种。

      • ALWAYS:表示不做元数据缓存,所有元数据操作直接从远端读取。

      • ONCE:表示进行元数据缓存,元数据除第一次从远端读取后续从本地读取。

      您可以根据需求选择其中一种适合的策略。

      说明

      如果cacheStrategy为DHT,则metaPolicy必须为ONCE。

      ALWAYS

      readPolicy

      读文件策略,当前仅支持CACHE_ASIDE,表示优先从缓存中读取。

      CACHE_ASIDE

      writePolicy

      写文件策略。支持

      • WRITE_AROUND:表示直接写入远端。

      • CACHE_ONLY:表示写入暂存区。

        说明

        使用CACHE_ONLY策略时必须搭配ONCE使用。

      • WRITE_THROUGH:表示写入落缓存。

      WRITE_AROUND

    3. 执行以下命令,刷新到JindoCache缓存系统里。

      jindocache -refreshCacheSet -path /path/cacheset.xml

      执行成功,返回信息中包含Successfully refresh cacheset !!!。JindoCache更多命令使用,请参见JindoCache CLI使用说明

    4. 您可以使用listCacheSet命令,查看系统中的CacheSet信息。

      jindocache -listCacheSet
  2. 配置JindoSDK。

    将JindoCache服务OSS-HDFS实现类配置到Hadoop-Common。在EMR控制台Hadoop-Common服务的配置页面的core-site.xml页签,修改相应的配置项。配置项的具体操作,请参见管理配置项

    参数

    说明

    fs.xengine

    固定值为jindocache。

    如果将该参数值置空,客户端将不再使用缓存,而是每次与后端直接进行通信。

    说明

    此配置为客户端配置,无需重启JindoCache服务。

    完成以上配置后,作业访问OSS-HDFS即可利用缓存功能。JindoCache存储加速系统提供了透明缓存的使用方式,因此作业在访问OSS-HDFS时无需进行任何修改。一旦作业读取了OSS-HDFS上的数据,该数据将自动缓存至JindoCache存储加速系统中。之后,访问相同的数据时能够命中缓存,从而提高读取性能。

常见问题

如何配置OSS-HDFS AccessKey?

JindoCache支持免密访问OSS-HDFS,但如果需跨账户访问OSS-HDFS,则需配置权限,包括AccessKey ID、AccessKey Secret和Endpoint等相关信息。

  1. 进入JindoCache服务的common页签。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 集群管理页面,单击目标集群操作列的集群服务

    4. 单击JindoCache服务区域的配置

    5. 单击common页签。

  2. 新增配置并生效配置。

    1. 单击新增配置项

    2. 新增配置项对话框中,新增以下配置项。

      新增配置项和生效配置的具体操作,请参见管理配置项

      说明

      YYY为OSS-HDFS Bucket的名称。

      参数

      说明

      jindocache.oss.bucket.YYY.accessKeyId

      OSS-HDFS的AccessKey ID。

      jindocache.oss.bucket.YYY.accessKeySecret

      OSS-HDFS的AccessKey Secret。

      jindocache.oss.bucket.YYY.endpoint

      OSS-HDFS的Endpoint。例如,cn-hangzhou.oss-dls.aliyuncs.com。

      jindocache.oss.bucket.YYY.data.lake.storage.enable

      固定值为true。