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

概念

块存储模式提供了最为高效的数据读写能力和元数据访问能力,并且能够支持更加全面的Hadoop文件系统语义。同时,JindoFS也提供了外部客户端,能够从集群外部访问建立在E-MapReduce集群内的JindoFS文件系统。

数据以Block形式存储在后端存储OSS上,本地Namespace服务维护元数据信息,该模式在性能上较优,无论是数据性能还是元数据性能。

应用场景

E-MapReduce目前提供了三种大数据存储系统,E-MapReduce OssFileSystem、E-MapReduce HDFS 和 E-MapReduce JindoFS,其中OssFileSystem和JindoFS都是云上存储的解决方案,下表为这三种存储系统和开源OSS各自的特点。

特点 开源 OSS E-MapReduce OssFileSystem E-MapReduce HDFS E-MapReduce JindoFS
存储空间 海量 海量 取决于集群规模 海量
可靠性
吞吐率因素 服务端 集群内磁盘缓存 集群内磁盘 集群内磁盘
元数据效率
扩容操作 容易 容易 容易 容易
缩容操作 容易 容易 需Decommission 容易
数据本地化 较强

JindoFS块存储模式具有以下几个特点:

  • 海量弹性的存储空间,基于OSS作为存储后端,存储不受限于本地集群,而且本地集群能够自由弹性伸缩。
  • 能够利用本地集群的存储资源加速数据读取,适合具有一定本地存储能力的集群,能够利用有限的本地存储提升吞吐率,特别对于一写多读的场景效果显著。
  • 元数据操作效率高,能够与HDFS相当,能够有效规避OSS文件系统元数据操作耗时以及高频访问下可能引发不稳定的问题。
  • 能够最大限度保证执行作业时的数据本地化,减少网络传输的压力,进一步提升读取性能。

配置集群

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

说明
  • 红框中为必填的配置项。
  • JindoFS支持多命名空间,本文命名空间以test为例。
参数 参数说明 示例
jfs.namespaces 表示当前JindoFS支持的命名空间,多个命名空间时以逗号隔开。 test
jfs.namespaces.test.uri 表示test命名空间的后端存储。 oss://oss-bucket/oss-dir
说明 该配置也可以配置到OSS bucket下的具体目录,该命名空间即以该目录作为根目录来读写数据。
jfs.namespaces.test.mode 表示test命名空间为块存储模式。 block
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提供了Storage Policy功能,提供更加灵活的存储策略适应不同的存储需求,可以对目录设置以下四种存储策略:

策略 策略说明
COLD 表示数据仅在OSS上有一个备份,没有本地备份,适用于冷数据存储。
WARM

默认策略。

表示数据在OSS和本地分别有一个备份, 本地备份能够有效的提供后续的读取加速。

HOT 表示数据在OSS 上有一个备份,本地有多个备份,针对一些最热的数据提供更进一步的加速效果。
TEMP 表示数据仅有一个本地备份,针对一些临时性数据,提供高性能的读写,但降低了数据的高可靠性,适用于一些临时数据的存取。

JindoFS 提供了Admin工具设置目录的Storage Policy(默认为 WARM),新增的文件将会以父目录所指定的 Storage Policy 进行存储,使用方式如下:

jindo dfsadmin -R -setStoragePolicy [path] [policy]

通过以下命令,获取某个目录的存储策略:

jindo dfsadmin -getStoragePolicy [path]
说明 其中[path] 为设置policy的路径名称, -R表示递归设置该路径下的所有路径。

Admin工具还提供archive命令,实现对冷数据的归档。

此命令提供了一种用户显式淘汰本地数据块的方式。Hive分区表按天分区,假如业务上对一周前的分区数据认为不会再经常访问,那么就可以定期将一周前的分区目录执行archive,淘汰本地备份,文件备份将仅仅保留在后端OSS 上。

Archive命令的使用方式如下:

jindo dfsadmin -archive [path]
说明 [path]为需要归档文件的所在目录路径。