缓存模式(Cache)主要兼容原生OSS存储方式,文件以对象的形式存储在OSS上,每个文件根据实际访问情况会在本地进行缓存,提升EMR集群内访问OSS的效率,同时兼容了原有OSS原有文件形式,数据访问上能够与其他OSS客户端完全兼容。本文主要介绍JindoFS的缓存模式及其使用方式。
背景信息
缓存模式最大的特点就是兼容性,保持了OSS原有的对象语义,集群中仅做缓存,因此和其他的各种OSS客户端是完全兼容的,对原有OSS上的存量数据也不需要做任何的迁移、转换工作即可使用。同时集群中的缓存也能一定程度上提升数据访问性能,缓解读写OSS的带宽压力。
配置使用方式
- OSS Scheme
详情请参见配置OSS Scheme(推荐)。
- JFS Scheme
详情请参见配置JFS Scheme。
配置OSS Scheme(推荐)
OSS Scheme保留了原有OSS文件系统的使用习惯,即直接通过oss://<bucket_name>/<path_of_your_file>
的形式访问OSS上的文件。使用该方式访问OSS,无需进行额外的配置,创建EMR集群后即可使用,对于原有读写OSS的作业也无需做任何修改即可运行。
配置JFS Scheme
启用缓存
启用缓存会利用本地磁盘对访问的热数据块进行缓存,默认状态为禁用,即所有OSS读取都直接访问OSS上的数据。
缓存启用后,Jindo服务会自动管理本地缓存备份,通过水位清理本地缓存,请您根据需求配置一定的比例用于缓存,详情请参见磁盘空间水位控制。
磁盘空间水位控制
JindoFS后端基于OSS,可以提供海量的存储,但是本地盘的容量是有限的,因此JindoFS会自动淘汰本地较冷的数据备份。我们提供了storage.watermark.high.ratio
和storage.watermark.low.ratio
两个参数来调节本地存储的使用容量,值均为0~1的小数,表示使用磁盘空间的比例。
访问OSS bucket
- OSS Scheme
- 在配置页面,单击smartdata-site页签。 的
- 单击自定义配置,在新增配置项对话框中增加以下参数,单击确定。
参数 参数说明 fs.jfs.cache.oss-accessKeyId 表示存储后端OSS的AccessKey ID。 fs.jfs.cache.oss-accessKeySecret 表示存储后端OSS的AccessKey Secret。 fs.jfs.cache.oss-endpoint 表示存储后端OSS的endpoint。
- JFS Scheme
- 在配置页面,单击bigboot页签。 的
- 修改jfs.namespaces为test。
- 单击自定义配置,在新增配置项对话框中增加以下参数,单击确定。
参数 参数说明 jfs.namespaces.test.oss.uri 表示test命名空间的后端存储。示例:oss://<oss_bucket.endpoint>/<oss_dir>。 endpoint信息直接配置在oss.uri中。
jfs.namespaces.test.oss.access.key 表示存储后端OSS的AccessKey ID。 jfs.namespaces.test.oss.access.secret 表示存储后端OSS的AccessKey Secret。
- OSS Scheme
- JFS Scheme
- 在配置页面,单击namespace页签。 的
高级配置
Cache模式还包含一些高级配置,用于性能调优,以下配置均为客户端配置,修改后无需重启SmartData服务。
- 在服务配置区域的client页签,配置以下参数。
参数 参数说明 client.oss.upload.threads 每个文件写入流的OSS上传线程数。默认值:4。 client.oss.upload.max.parallelism 进程级别OSS上传总并发度上限,防止过多上传线程造成过大的带宽压力以及过大的内存消耗。默认值:16。 - 在服务配置区域的smartdata-site页签,配置以下参数。
参数 参数说明 fs.jfs.cache.copy.simple.max.byte rename过程使用普通copy接口的文件大小上限(小于阈值的使用普通 copy接口,大于阈值的使用multipart copy接口以提高copy效率)。 说明 如果确认已开通OSS fast copy功能,参数值设为-1,表示所有大小均使用普通copy接口,从而有效利用fast copy获得最优的rename性能。fs.jfs.cache.write.buffer.size 文件写入流的buffer大小,参数值必须为2的幂次,最大为8MB,如果作业同时打开的写入流较多导致内存使用过大,可以适当调小此参数。默认值:1048576。 fs.oss.committer.magic.enabled 启用Jindo Job Committer,避免Job Committer的rename操作,来提升性能。默认值:true。 说明 针对Cache模式下,由于OSS这类对象存储rename操作性能较差的问题,推出了Jindo Job Committer。