有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
腾讯云存储团队正式发布数据加速器 GooseFS 1.4.0 版本,该版本针对 AI、大数据场景提供了文件解压缩等便捷易用的工具,同时针对海量文件读写下的集群性能和稳定性问题进行了针对性优化,提升了产品竞争力。

重要更新点一:提供文件解压缩能力

AI 场景下,业务团队可能会将大量用于训练或者学习的文件打包成一个压缩包并上传到对象存储中;在执行训练或者学习任务时,再将压缩包文件下载到本地并解压。这一流程会对底层对象存储服务产生较大的读带宽,每次启动任务时,无论需要读取多少文件,都需要将文件所处的压缩包整包下载才可以执行。

GooseFS 在本次更新中联合 COS 服务提供了服务端的解压缩能力,支持通过解压缩工具向 COS 服务端发起解压缩请求,提升文件访问性能。GooseFS 支持文件解压缩能力的基本框架如下:



整体流程上:
1. 首先通过 GooseFS 解压缩指令 goosefs fs decompress 向 COS 服务发起指定文件的解压缩请求。
2. COS 服务收到解压缩请求后,会向解压缩服务模块提交解压缩任务,由文件解压缩模块管理任务进度。
3. 解压缩过程中,用户可以通过 goosefs fs queryDecompress 指令查询解压缩任务的状态。
4. 解压缩任务完成后,完成解压后的文件会输出至用户指定的文件目录中。
5. 支持通过 goosefs fs listDecompressJobs <namespace> 指令查阅指定命名空间的解压缩任务进展。
说明
GooseFS 提供的解压缩能力目前仍然在公测阶段,公测阶段仅支持上海自动驾驶专区,暂不进行收费,如需使用请 提交工单 申请。
使用 GooseFS 文件解压缩能力的优势如下:
1. 避免文件读放大问题,减少底层对象存储服务的读带宽。用户在服务端侧完成解压缩后,可按需读取需要用到的文件,无需读取整个压缩包。
2. 减少客户端侧的 CPU 压力。用户无需在客户端侧执行解压缩操作,可以让宝贵的计算资源聚焦在 AI 计算任务上。

重要更新点二:支持临时密钥主动热更新

GooseFS 通过托管在集群中的密钥访问远端的对象存储服务。腾讯云的永久密钥具备永续的有效期,而临时密钥的有效期则可以由用户自行指定,最长不超过 2 小时。在 GooseFS 集群中托管永久密钥存在一定的安全风险,例如当永久密钥泄露时,对象存储服务中的文件将持续存在泄露的风险。此前,GooseFS 已经支持在 CVM、EMR 等环境中自动更新临时密钥,但是对于非上述场景中(例如裸金属、容器)却无法动态更新密钥,导致临时密钥过期后需要卸载后重新挂载。这个过程不仅繁琐,同时也会影响业务代码的运行。因此在本次更新中,GooseFS 团队进一步增强了临时密钥托管功能,允许用户主动地热更新临时密钥,并立即生效,确保密钥的有效性。
下面是对临时密钥托管的介绍,通过临时密钥托管服务,用户可以只在 Worker 节点上缓存从 Master 节点拉取的临时密钥信息,并通过临时密钥访问远端对象存储服务,获取业务所需数据。GooseFS 支持临时密钥托管服务的整体框架如下所示:



对于 CVM、EMR、CPM 等环境,只需要指定对应的 InstanceCredentialsProvider 即可,如在 CVM 机器可以用 CVMInstanceCredentialsProvider。
而对于容器来说,使用流程如下:
1. 在 Leader Master 节点中,可以周期性地通过以下指令,变更节点上的临时密钥信息。
goosefs ns update <namespace> [--secret <key=value>] [--attribute fs.cosn.userinfo.sessionToken=xxx]
2. 客户端读取文件时,如果文件未缓存在 Worker 节点上,Worker 节点可以通过临时密钥访问远端对象存储服务拉取文件。 临时密钥更新命令示例如下:
goosefs ns update testNamespace --wPolicy 1 --rPolicy 1 --secret fs.cosn.userinfo.secretId=AKXXXX--secret fs.cosn.userinfo.secretKey=XXXXX --secret fs.cosn.userinfo.sessionToken=XXXX --attribute fs.cosn.bucket.region=ap-guangzhou --attribute fs.cosn.credentials.provider=org.apache.hadoop.fs.auth.SessionTokenCredentialProvider
注意
update 需要填写完整的参数,否则缺失的参数会使用默认参数填充。
使用 GooseFS 临时密钥托管主要可以减少密钥泄露带来的安全风险。GooseFS 集群中可能管理成百上千台 Worker 节点,每一台 Worker 节点中都持久化永久密钥大大增加了密钥泄露的概率,使用临时密钥可以极大缓解此类风险。

重要更新点三:GooseFS-FUSE 客户端支持降级读

GooseFS-FUSE 可以在一台 Unix 机器上的本地文件系统中挂载一个 GooseFS 分布式文件系统。通过使用该特性,一些标准的命令行工具(例如 ls、cat 以及 echo)可以直接访问 GooseFS 分布式文件系统中的数据。GooseFS-FUSE 在访问 GooseFS 时,需要先到 GooseFS 集群中获取缓存文件,如果文件不存在,GooseFS 会到远端对象存储服务上拉取文件。如果 GooseFS 集群的 Master 节点异常(例如 Standalone 模式的 Master 节点宕机,HA 模式的多节点主备切换),导致集群整体不可用时,GooseFS-FUSE 将无法读取到文件,导致客户端也不可用。
GooseFS-FUSE 客户端在本期更新中新增了降级读能力,可以在 Master 节点异常时透传 FUSE 客户端的请求到远端对象存储服务上,这一能力有助于提升客户端整体的可用性。
整体流程上:
1. 默认情况下,GooseFS-FUSE 默认会去 Master 节点获取文件元数据信息,并读取 GooseFS 集群中的文件。
2. 节点异常的情况下,GooseFS-FUSE 会启用降级读模式,直接去远端对象存储中读取文件。

其他更新点

除了上述更新之外,我们在本次版本中优化了 GooseFS 的产品性能和稳定性,进一步提升 GooseFS 在大数据、AI 场景下的集群稳定性。主要更新点如下:
1. GooseFS distributedLoad 能力支持层级遍历能力,支持递归拉取指定目录下的元数据信息。
2. FUSE 随机读性能优化。
3. 增加 Master 查询/更新 RocksDB 的分位耗时监控,提升元数据服务的监控灵敏度。
4. 优化了 GooseFS HA 模式下的集群恢复时间,提升了集群可用性。
5. CosN 依赖版本升级,支持通过原生 HDFS 协议访问开启元数据加速的存储桶,提升大数据场景下的文件操作性能。
6. GooseFS 配置精简优化,减少了不必要的配置项,提升了配置易用性。
7. listInfo 精简优化。
8. 大文件顺序读优化。
同时,GooseFS 1.4.0 版本还修复了若干问题,其中存在潜在稳定性风险的重要修复点如下:
1. 修复 Worker 接收大量无效 async block 的请求。
2. 优化 Worker 上报时对孤立 block 的处理逻辑。
如果您想了解数据加速器 GooseFS 的更多信息,或者上手使用 GooseFS ,请参见 数据加速器 GooseFS 产品文档