GooseFS 是由腾讯云推出的一款分布式缓存方案,主要针对包括需要缓存加速的数据湖业务场景,提供基于对象存储 COS 服务的近计算端数据加速层。
GooseFS 基于开源大数据缓存方案 Alluxio 进行设计和研发。相较于开源方案,GooseFS 提供了更多关键特性,稳定性和性能优化;同时深度融合了腾讯云生态,对接了腾讯云 TKE 、EMR 等计算服务,为用户提供开箱即用的能力。
缓存加速和数据本地化 GooseFS 提供的重要能力之一。
我们使用 NNBench 进行测试。NNBench 是 HDFS 官方自带的用于测试 NameNode 性能的工具。由于它使用的是标准的 FileSystem 接口,因此可以使用它来测试 GooseFS 服务端的性能。在测试方案上,我们在 GooseFS 和 HDFS 上创建相同的数据集,观察 TPS 值,对比 GooseFS 性能表现情况。
我们使用了 1 台 EMR 标准型 S2 机器( CPU:8 核,内存:32GB,高效云盘:100G x 1 )作为 GooseFS 集群的 Master 节点,3 台 EMR 标准型 S5 机器( CPU:16 核,内存:64GB,高效云盘:100G x 5 )作为 Worker 节点,同时将 GooseFS 集群缓存策略设置为 wPolicy=MUST_CACHE,rPolicy=CACHE 。
1. Write 测试
大数据场景中需要频繁创建文件,我们首先比较了写入文件的性能,由于本次测试主要目的是验证元数据性能表现,因此文件大小选择了 0 字节。测试结果如下所示:
可以看到,在集群的环境配置,maps 等都相同的情况下:
( 1 ) GooseFS 在加载元数据的比 hdfs 性能至少提升 20%。
( 2 )数据量增加的时候 GooseFS 处理数据等性能提升更明显。
这个主要是因为 GooseFS 采用文件粒度锁,可以并发创建文件。而 HDFS 是全局锁,相当于顺序做创建操作。因此写请求 QPS 增加的时候,GooseFS 性能提升更明显。
2. List 测试
Write 测试主要测试高并发下元数据服务单点写入、单点查询的性能。然而,文件列表导出( ls/ls -R)操作、文件大小统计( du/count)操作也是用户使用频率较高的操作,这些命令的执行时间,反应了元数据服务遍历操作的执行效率。在测试方案上,为了保证 HDFS 和 GooseFS 测试数据的一致性,我们采用相同的数据集,执行相同的操作,测试 GooseFS 和 HDFS 元数据服务遍历操作的执行效率。
数据集分两个场景:
( 1 )多层级数据:50w 数据,目录层级 4 层。
( 2 )单层级数据:单个目录下 10w 文件。
相关测试结果表现如下:
可以看到,GooseFS 加速数据 I/O 性能。提供了感知元数据的能力,能够加速大数据场景下列出文件列表 List 等元数据操作的性能。尤其在多层级的数据中性能加速更加明显。
3 、SliveTest 测试
SliveTest 位于 hadoop 的 test 包中,代码结构清晰,其主要功能是通过大量 map 制造多种 rpc 请求,检测 Namenode 的性能。我们可以设定 map 数量,每个 map 发起的 rpc 请求次数,每一种 rpc 操作占总操作的百分比,以及读写数据量、block size 等配置。测试 master 混合访问情况下各类请求的 qps 。
在测试方案上,设置 RPC 请求(读:60%,写:40%)模拟混合访问下,HDFS 和 GooseFS 处理数据的性能。我们将 RPC 设置为:append 10% create 10% delete 10% mkdir 5% rename 5% read 30% ls 30%。
相关测试结果表现如下:
可以看到,Master 在混合访问情况下,GooseFS 整体性能表现优于 HDFS 。
基于上面几个测试,GooseFS 采用文件粒度锁及 list 开启了并发优化,在 SliveTest 这种混合读写(多读少写)的场景中,GooseFS 处理事物的能力明显优于 HDFS 。
GooseFS 提供了可预测的资源划分和资源使用,使得系统管理员可以对外提供稳定的性能保证。此外,GooseFS 可以给共享存储资源的计算集群带来显著的性能收益。
GooseFS 提供近计算端的分布式共享缓存,上层计算应用可以透明地、高效地从远端存储将需要频繁访问的热数据缓存到近计算端,加速数据 I/O 性能。关于更多 GooseFS 请前往: https://cloud.tencent.com/document/product/436/56412