本文主要介绍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的AccessKey ID。 | xxxx
说明 考虑到性能和稳定性,推荐使用同账户、同region下的OSS bucket作为存储后端,此时,E-MapReduce集群能够免密访问OSS,无需配置AccessKey
ID和AccessKey Secret。
|
jfs.namespaces.test.oss.access.secret | 表示存储后端OSS的AccessKey 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策略配置不生效。