乐趣区

关于对象存储:GooseFS-统一命名空间-加速存储业务访问

01 前言

GooseFS 是 腾讯云存储团队推出的分布式缓存计划,次要针对须要缓存减速的数据湖业务场景,提供基于对象存储 COS 服务的近计算端数据减速层。
对立命名空间是 GooseFS 提供的通明命名机制,能够交融多种不同的底层存储系统拜访语义,为用户提供了一个对立的数据管理交互视图。简略来说,用户只须要应用 GooseFS 提供的拜访接口协议,就能够拜访对象存储、云 HDFS、本地 HDFS 等不同存储系统,并减速这些存储业务的拜访。

02 对立命名空间能力概述

越来越多的企业大数据搬到私有云上,企业的存储架构也变得日益简单。相当多的业务采纳 HDFS 和对象存储等不同存储服务构建混合存储架构,将一些冷数据冷备到私有云 COS 上,仅在须要时读取,热数据则留存在本地 HDFS 进行高性能运算。

在这种混合存储架构模型下须要保护多种不同的存储接口,减少了运维的复杂度。因而,如果有一套存储服务可能对接不同的后端存储系统,为下层计算业务提供统一的拜访视图,将能极大地缩小业务开发的难度,晋升存储服务应用效率。

GooseFS 的对立命名空间能力可能无效缓解这一问题,这一能力能够对接不同的底层存储系统,如本地文件系统、腾讯云对象存储(Cloud Object Storage,COS)、云 HDFS(Cloud HDFS,CHDFS)等,与这些底层存储系统进行通信,并为下层业务提供对立的拜访接口和文件协定。业务侧只需应用 GooseFS 的拜访接口,即可拜访存储在不同底层存储系统中的数据。

用户能够通过 GooseFS 创立命名空间的指令 ns create,将 COS 和 云 HDFS 的指定文件目录挂载到 GooseFS 中,而后通过 gfs:// 的这一对立的 schema 拜访数据。以上图中的例子进行一个阐明:

  • COS 总共有 3 个存储桶,别离是 bucket-1、bucket-2、bucket-3,其中 bucket-1 有 BU_A 和 BU_B 两个目录,bucket-1 和 bucket-2 均挂载在 GooseFS 中。
  • 云 HDFS 中有 BU_E、BU_F、BU_G 和 BU_H 共 4 个目录,其中除了 BU_H 其余目录均挂载到 GooseFS 上。
  • 在 GooseFS 的文件操作中,如果以 gfs:// 这一对立的 schema 拜访 BU_A 和 BU_E 这两个目录,均可失常拜访,且文件缓存在 GooseFS 的本地文件系统中。
  • BU_A 和 BU_E 这两个存储在底层文件系统(COS、云 HDFS)中的目录曾经挂载到 GooseFS 中,如果文件曾经缓存在 GooseFS 的上,能够通过 gfs:// 这一对立的 schema 拜访(例如 hadoop fs ls gfs://BU_A);也能够通过各个远端文件系统的命名空间拜访(例如 hadoop fs ls cosn://bucket-1/BU_A)。
  • 如果文件未被缓存在 GooseFS 上,此时通过 gfs:// 这一模式拜访则会失败,因为文件未被缓存在本地文件系统中,但依然能够通过底层存储系统的命名空间拜访。

03 应用对立命名空间能力

用户能够通过 ns 操作在 GooseFS 中创立命名空间,并将底层存储系统映射到 GooseFS 上,目前反对的底层存储系统包含 COS、云 HDFS、本地 HDFS 等。创立命名空间的操作与 Linux 文件系统中挂载文件卷盘相似。创立命名空间后,GooseFS 能够为客户端提供一个具备对立拜访语义的文件系统。

目前 GooseFS 命名空间的操作指令集如下:

$ goosefs ns
Usage: goosefs ns [generic options]
       [create <namespace> <CosN/Chdfs path> <--wPolicy <1-6>> <--rPolicy <1-5>> [--readonly] [--shared] [--secret fs.cosn.userinfo.secretId=<AKIDxxxxxxx>] [--secret fs.cosn.userinfo.secretKey=<xxxxxxxxxx>] [--attribute fs.ofs.userinfo.appid=1200000000][--attribute fs.cosn.bucket.region=<ap-xxx>/fs.cosn.bucket.endpoint_suffix=<cos.ap-xxx.myqcloud.com>]]
       [delete <namespace>]                                      
       [help [<command>]]                                        
       [ls [-r|--sort=option|--timestamp=option]]                
       [setPolicy [--wPolicy <1-6>] [--rPolicy <1-5>] <namespace>]
       [setTtl [--action delete|free] <namespace> <time to live>]
       [stat <namespace>]                                        
       [unsetPolicy <namespace>]                                 
       [unsetTtl <namespace>]

上述指令集中各项指令的能力简述如下:

一. 创立和删除命名空间

通过 GooseFS 创立命名空间操作,能够将频繁拜访的热数据从远端存储系统缓存到本地高性能存储节点中,为本地计算业务提供高性能的数据拜访。如下指令展现了将 COS 中的存储桶 example-bucket、存储桶中的 example-prefix 目录以及云 HDFS 文件系统别离映射到 test_cos、test_cos_prefix 和 test_chdfs 等命名空间下。

# 将 COS 存储桶 example-bucket 映射到 test_cos 命名空间中
$ goosefs ns create test_cos cosn://example-bucket-1250000000/ --wPolicy 1 --rPolicy 1 --secret fs.cosn.userinfo.secretId=AKIDxxxxxxx --secret fs.cosn.userinfo.secretKey=xxxxxxxxxx --attribute fs.cosn.bucket.region=ap-guangzhou --attribute fs.cosn.bucket.endpoint_suffix=cos.ap-guangzhou.myqcloud.com 
​
# 将 COS 存储桶 example-bucket 的 example-prefix 目录映射到 test_cos_prefix 命名空间中
$ goosefs ns create test_cos_prefix cosn://example-bucket-1250000000/example-prefix/ --wPolicy 1 --rPolicy 1 --secret fs.cosn.userinfo.secretId=AKIDxxxxxxx --secret fs.cosn.userinfo.secretKey=xxxxxxxxxx --attribute fs.cosn.bucket.region=ap-guangzhou --attribute fs.cosn.bucket.endpoint_suffix=cos.ap-guangzhou.myqcloud.com
​
# 将 云 HDFS 文件系统 f4ma0l3qabc-Xy3 映射到 test_chdfs 命名空间中
$ goosefs ns create test_chdfs ofs://f4ma0l3qabc-Xy3/ --wPolicy 1 --rPolicy 1 --attribute fs.ofs.userinfo.appid=1250000000

创立胜利后,能够通过 goosefs fs ls 指令查看目录详情:

$ goosefs fs ls /test_cos

对于不须要应用的命名空间,能够通过 delete 指令来删除:

$ goosefs ns delete test_cos
Delete the namespace: test_cos

A. 设置缓存策略

对于每一个命名空间,用户能够通过 setPolicy 和 unsetPolicy 设置指定命名空间的缓存策略,指定拜访读写的缓存状况,从而晋升数据的拜访性能。设置缓存策略的指令集如下:
$goosefs ns setPolicy [–wPolicy <1-6>] [–rPolicy <1-5>] <namespace>
其中各项参数的含意如下:

  • wPolicy:写缓存策略,反对 6 种写缓存策略。
  • rPolicy:读缓存策略,反对 5 种读缓存策略。
  • namespace:指定的命名空间。

目前 GooseFS 反对的读写缓存策略别离如下:

B. 写缓存策略

阐明:Write_Type:指用户调用 SDK 或者 API 向 GooseFS 中写入数据时指定的文件缓存策略,对单个文件失效。

C. 读缓存策略

阐明:Read_Type:指用户调用 SDK 或者 API 从 GooseFS 中读取数据时指定的文件缓存策略,对单个文件失效。

联合目前大数据的业务实际,咱们举荐的读写缓存策略组合次要如下:

如下示例展现了将指定命名空间 test_cos 的读写缓存策略别离设置为 CACHE_THROUGH 和 CACHE_CONSISTENT:

$ goosefs ns setPolicy --wPolicy 3 --rPolicy 5 test_cos

如果须要重置读写缓存策略,能够通过 unsetPolicy 指令实现,如下策略展现了重置 test_cos 命名空间的读写缓存策略:

$ goosefs ns unsetPolicy test_cos

二. 设置 TTL

TTL 用于治理缓存在 GooseFS 本地节点的数据,配置 TTL 参数能够让缓存数据在指定的工夫后执行指定的操作,例如 delete 或者 free 操作。目前设置 TTL 的操作指令如下:

$ goosefs ns setTtl [--action delete|free] <namespace> <time to live>

其中各项参数的含意如下:

  • action:缓存工夫到期后执行的操作,目前反对 delete 和 free 两种操作。delete 操作会删除缓存和 UFS 上的数据,free 操作只会删除缓存上的数据。
  • namespace:指定的命名空间。
  • time to live:数据缓存工夫,单位毫秒。
    如下示例展现了将指定命名空间 test_cos 的策略设置为 60 秒到期后删除:

    $ goosefs ns setTtl --action free test_cos 60000

04 结语

对立命名空间是 GooseFS 提供的通明命名机制,为用户提供了一个对立的数据管理交互视图,用户只须要应用 GooseFS 提供的拜访接口协议,就能够拜访不同存储系统,并减速这些存储业务的拜访。极大地缩小业务开发的难度,晋升存储服务应用效率。对于更多 GooseFS 请返回:https://cloud.tencent.com/doc…

退出移动版