文档

JindoCache加速OSS透明缓存

更新时间:

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

前提条件

  • 已创建集群,且选择了JindoCache服务,创建集群操作请参见创建集群

  • 已开通OSS服务,详情请参见开通OSS服务

使用限制

文件以对象的形式存储在OSS上。

操作步骤

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

  1. 选择缓存策略。

    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实现类配置到Hadoop-Common。在EMR控制台Hadoop-Common服务的配置页面的core-site.xml页签,修改相应的配置项。配置项的具体操作,请参见管理配置项

    参数

    说明

    fs.xengine

    固定值为jindocache。

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

    说明

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

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

常见问题

如何配置OSS AccessKey?

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

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

    1. 登录E-MapReduce控制台

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

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

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

    5. 单击common页签。

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

    1. 单击新增配置项

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

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

      说明

      XXX为OSS Bucket的名称。

      参数

      说明

      jindocache.oss.bucket.XXX.accessKeyId

      OSS的AccessKey ID。

      jindocache.oss.bucket.XXX.accessKeySecret

      OSS的AccessKey Secret。例如,oss-cn-hangzhou-internal.aliyuncs.com。

      jindocache.oss.bucket.XXX.endpoint

      OSS的Endpoint。