本文主要介绍JindoFS的缓存模式(Cache),以及一些典型的应用场景。

概述

缓存模式兼容现有OSS存储方式,文件以对象的形式存储在OSS上,每个文件根据实际访问情况会在本地进行数据和元数据的缓存,从而提高访问数据以及元数据的性能,Cache模式提供不同元数据同步策略以满足用户在不同场景下的需求。

应用场景

缓存模式最大的特点就是兼容性,保持了OSS原有的对象语义,集群中仅做缓存,因此JindoFS和OSS客户端、OssFileSystem等,或者其他的各种OSS的交互程序是完全兼容的,对原有OSS上的存量数据也不需要做任何的迁移、转换工作即可使用。同时集群中的数据和元数据缓存也能一定程度上提升数据访问性能。

配置集群

所有JindoFS相关配置都在Bigboot组件中,配置如下图所示:

说明
  • 红框中为必填的配置项。
  • JindoFS支持多命名空间,本文命名空间以test为例。
参数 参数说明 示例
jfs.namespaces 表示当前 JindoFS 支持的命名空间,多个命名空间时以逗号隔开。 test
jfs.namespaces.test.uri 表示 test 命名空间的后端存储。 oss://oss-bucket/
说明 该配置也可以配置到OSS bucket下的具体目录,该命名空间即以该目录作为根目录来读写数据,但一般情况下配置bucket即可,这样路径就和原生OSS保持一致。
jfs.namespaces.test.mode 表示 test 命名空间为缓存模式。 cache
jfs.namespaces.test.oss.access.key 表示存储后端OSS的AK。 xxxx
说明 考虑到性能和稳定性,推荐使用同账户、同region下的OSS bucket作为存储后端,此时,E-MapReduce集群能够免密访问OSS,无需配置 AK和secret。
jfs.namespaces.test.oss.access.secret 表示存储后端OSS的secret。

配置完成后保存并部署,然后在SmartData服务中重启Namespace Service,即可开始使用JindoFS。

元数据同步策略

缓存模式下可能存在JindoFS集群构建之前,用户已经在OSS上保存了大量数据的场景,对于这种场景,后续的数据访问会同步数据和元数据到JindoFS集群,数据同步策略为了访问数据都会在本地保留一份;元数据同步策略分为两部分,包括元数据同步间隔策略和元数据load策略。

  • 元数据同步间隔:

    配置参数为namespace.sync.interval, 该参数默认值为-1, 表示不会同步OSS上的元数据。

    • namespace.sync.interval=0时,表示每次操作都会同步OSS 上的元数据
    • namespace.sync.interval>0时,表示会以固定的时间间隔来同步OSS上的元数据。
      说明 例如当namespace.sync.interval=5时, 表示每隔5秒会去同步OSS上的元数据。
  • 元数据Load策略:

    配置参数为namespace.sync.loadtype,该配置参数为枚举类型{never, once, always}never表示从不同步OSS上的元数据;once为默认配置,表示只从OSS同步一次元数据;always表示每次操作都会同步OSS上的元数据。

    说明 当不配置namespace.sync.interval参数时,才会去使用Load策略;如果已配置namespace.sync.interval参数,则Load策略配置不生效。