本文主要介绍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的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提供了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]
Admin工具还提供archive命令,实现对冷数据的归档。
此命令提供了一种用户显式淘汰本地数据块的方式。Hive分区表按天分区,假如业务上对一周前的分区数据认为不会再经常访问,那么就可以定期将一周前的分区目录执行archive,淘汰本地备份,文件备份将仅仅保留在后端OSS上。
Archive命令的使用方式如下:
jindo dfsadmin -archive [path]