1. 传统大数据分析基于HDFS块存储系统,现面临海量数据和成本双重考验,降低存储成本的同时,如何保证系统性能不滑坡是数据分析领域普遍问题意识;
2. OCS架构 以现代高容量QLC-SSD为介质,对象存储组织元数据,组合开源分析工具,构建面向海量数据分析平台的存储架构,其架构和实测性能如何?
关于 Los Alamos National Laboratory
OCS(基于对象的计算存储)
数据格式:VTK,HDF5 VTK(Visualization Toolkit) VTK是一种专注于科学数据可视化的文件格式,常用于存储和展示三维数据。它广泛应用于计算机图形学和科学可视化领域,尤其适合存储几何数据(如点、线、面等)和场数据(如标量场和矢量场)。VTK格式允许用户以标准化的方式存储不同类型的数据结构,便于后续在各种可视化工具和软件中进行处理和渲染。 HDF5(Hierarchical Data Format version 5) HDF5是一种分层数据格式,广泛用于存储和管理大量复杂的数据。它支持自描述数据,即数据文件中包含数据的结构信息,便于在不同平台和应用程序之间传递和处理。HDF5特别适合于科学计算和机器学习等需要存储大规模、多维数组数据的领域。它具有高效的数据压缩和快速访问的特点,支持多种数据类型,适合存储矩阵、表格和其他数据集。 如何理解自描述数据? “自描述”指的是数据文件本身包含了关于其结构和内容的信息,因此不需要额外的外部描述文件来解释数据的组织方式。自描述格式的数据文件包含元数据(描述数据的数据),如数据的类型、维度、大小、标签等信息。这样一来,读取数据时,应用程序能够自动了解数据的组织结构、类型及其他特性,使数据更易于在不同的系统和平台间共享和解析。 以HDF5为例,自描述性意味着HDF5文件不仅存储数据内容,还包含数据结构的信息,比如每个数据集的名称、维度、属性等。当其他程序读取该文件时,不需要提前知道文件的结构,因为文件本身已经“描述”了自己的内容。这种特性对于大规模、复杂数据集尤其重要,因为它简化了数据的管理和跨平台使用。
Note:在科研领域,传统的存储基于块存储来构建,本文后面将提出一种新兴基于对象的数据存储方式。
关于谓词检索
在科学数据处理中,如果支持谓词检索,用户可以直接通过设置条件来筛选出符合条件的数据,而不需要读取整个数据集后再进行过滤。这里“不支持”意味着,用户只能通过读取完整数据集或部分偏移的数据来获取信息,缺乏直接按条件筛选数据的能力,这样会导致不必要的数据读取,影响检索效率。
- 使用SQL作为查询接口
- 支持带谓词的复杂查询
- 查询处理在存储I/O路径上被卸载/分布
- 覆盖SSD、存储阵列、服务器、客户端等
- 最小化数据移动
- 快速查询
- 基于标准的方法
- SQL/Substrait、Parquet、基于对象的查询下推API(新)、NVMe命令集(新)
右侧的示意图旨在说明传统文件系统(FS)与OCS(基于对象的计算存储)在数据查询处理方式上的差异。
1. 高效的数据筛选:OCS在存储层执行筛选操作,可以根据查询条件直接返回相关数据,避免读取整个数据集。这显著减少了数据移动量,提高了数据访问效率。
2. 支持复杂查询:OCS允许使用SQL作为查询接口,并支持带谓词的复杂查询(如条件筛选)。这使得在大规模数据上执行灵活的查询变得更容易。
3. 分布式查询处理:OCS架构将查询处理分布在存储I/O路径上(包括SSD、存储阵列、服务器等)。这减少了计算节点的负担,并加快了查询速度。
4. 标准化兼容性:OCS采用了标准化的API和数据格式(如Parquet、SQL、NVMe命令集等),便于与现有的数据库和分析工具集成,提高了系统的灵活性和兼容性。
1. 复杂性增加:OCS将计算任务下移到存储层,增加了存储系统的复杂性。存储设备需要具备更多计算能力,并且必须支持复杂查询处理,这可能增加硬件和维护成本。
2. 存储设备性能需求提升:OCS要求存储设备能够处理复杂的计算任务,可能导致存储设备的性能瓶颈。特别是在大规模数据环境下,存储设备的I/O性能和处理能力可能无法满足需求,导致延迟问题。
3. 安全性与隔离问题:将计算任务下移到存储层可能带来数据安全和隔离问题。不同用户和应用可能共享相同的存储资源,如何确保数据隔离和访问控制成为一个挑战。
4. 数据一致性与容错性:分布式计算通常会遇到数据一致性和容错性的问题。OCS需要处理数据在不同节点间的一致性维护,特别是在发生故障或网络延迟的情况下,如何确保查询结果的准确性和完整性。
5. 软件兼容性:虽然OCS支持标准化接口,但并非所有软件都能立即适配这一新架构。现有系统可能需要重新设计或调整,以充分利用OCS的功能。
通过NVMe over Fabrics将后端存储(OCSA)解耦
支持基于标准的对象和查询下推接口
与经典的Ceph存储系统相比,新型OCS架构有哪些独特之处?
OCS(基于对象的计算存储)架构在设计和功能上有以下几方面的独特之处:
- OCS:OCS不仅是一个存储系统,还在存储层加入了计算能力,可以在数据存储的同时进行数据过滤、查询下推等计算操作。这种“计算存储一体化”减少了数据在计算节点和存储节点之间的移动,从而提高了数据处理效率。
- Ceph:Ceph是一个面向对象和块存储的分布式存储系统,主要关注数据存储和数据冗余。Ceph缺乏内置的计算功能,通常需要数据移动到计算节点后再进行处理。
- OCS:OCS支持SQL查询下推,允许用户在存储层直接执行带谓词的复杂查询。这样可以只返回符合条件的相关数据,减少不必要的数据传输。
- Ceph:Ceph并不原生支持查询下推,数据必须被完全提取出来后才可进一步分析。这会导致在大规模数据环境下传输大量不必要的数据。
- OCS:OCS架构中的OCSA设备支持异构硬件(如NVMe SSD、CSD、CXL内存等),并通过异构设备管理来高效利用这些硬件资源。这种设计可以根据不同类型的数据和任务需求来选择合适的硬件,提高系统的整体性能。
- Ceph:Ceph通常使用通用的存储硬件,不具备直接的异构设备支持功能。尽管可以通过配置不同的节点类型来适应特定的性能需求,但灵活性不如OCS。
- OCS:OCS前端服务器支持S3 REST API,并与开放格式数据兼容,使其更易与现代数据分析和机器学习工作流集成。
- Ceph:Ceph也支持S3 API,但其设计更多偏向通用存储,不针对数据分析和查询优化。OCS则在设计上专门考虑了数据分析和查询的需求,特别适合用于科学计算和大数据分析的场景。
- OCS:OCS在存储阵列中内置了分析加速引擎,可以直接在存储层进行过滤和简单分析操作,减少了数据在存储和计算节点之间的来回传输。
- Ceph:Ceph缺少内置的数据分析功能,需要依赖外部计算集群进行数据处理,这种设计在大数据环境下会带来更多的网络和I/O开销。
- OCS:OCS架构是一个从底层存储到前端数据接口的纵向优化系统,具备高效的I/O路径,并支持基于对象的命令。这种架构设计旨在最小化数据移动量,加快查询速度。
- Ceph:Ceph采用分布式设计,侧重于数据的持久性和高可用性,但未针对特定查询场景进行优化。
关键特性:在各层级对象上进行计算
OCS在所有系统(客户端、存储服务器、存储设备)中支持对象存储,能够在各个层级提供一致的计算视角
通过Substrait和Arrow,OCS系统中的数据对象在客户端、前端服务器和OCSA设备上都保持相同的“分析块”视图。这样的设计允许在任何层级上进行数据处理或分析,并实现数据的一致性传递,提升了系统在多层级环境中的灵活性和计算效率。
关键特性:在各层级使用开源生态进行计算
Substrait[1]:关系代数的跨语言序列化
Apache Arrow[2] | Apache Arrow
比较“基础分析”和“OCS分析”之间的性能
选择性越高,性能提升越显著
减少不必要的数据传输所导致的计算和网络开销
如何理解 Selectivity ?
“选择性”指的是查询条件筛选数据的严格程度,或是查询结果与总数据集的比例。简单来说,选择性越高,意味着查询条件越严格,筛选出的数据量越少;反之,选择性低则表示返回的数据量较大。
[1]
Substrait: https://substrait.io/
[2]
Apache Arrow: https://arrow.apache.org/