构建数据湖仓的开源技术栈有哪些?
摘要:湖仓一体架构是一种新兴的数据管理方式,它融合了数据湖和数据仓库的优势,提供了统一的数据存储、事务支持、数据治理、实时与批处理能力以及弹性和可扩展性。在开源领域,湖仓一体技术栈的选择非常关键,因为它直接影响到系统的灵活性、扩展性和成本效益。以下是一篇关于湖仓一体开源技术栈的文章。
数据湖仓VS数据湖VS数据仓库的区别 数据湖仓开源技术栈
01
—
数据湖仓VS数据湖VS数据仓库的区别
传统数据仓库通常将计算与存储紧密结合,这种设计在扩展性方面存在局限。而现代云数据仓库技术打破了这一限制,实现了计算与存储的真正分离,使得两者能够根据需求独立扩展,优化了资源利用和成本效率。数据湖仓架构进一步推动了这一趋势,其设计哲学从一开始就包含了对计算和存储分离的原生支持。
在处理数据类型方面,传统数据仓库专为结构化和半结构化数据而设计,它们通常需要额外的功能或方法来处理开放数据文件和格式。数据湖仓则在设计上就考虑到了对各种数据类型的广泛支持,包括结构化、半结构化以及非结构化数据,其内部文件多采用开放格式,增强了数据的通用性和可移植性。
对于查询引擎的依赖性,传统数据仓库常常与特定厂商的查询技术绑定,限制了用户在查询解决方案上的自由度。数据湖仓架构则提供了更大的灵活性,允许用户基于不同的需求选择和切换多种查询引擎,从而为数据的分析和处理提供了多样化的选择。
02
—
数据湖仓的开源技术栈
数据存储
对象存储服务、块存储服务和⽂件存储服务是云计算和分布式存储中常⻅的三种存储模型。
对象存储服务
块存储服务
二进制格式
定义: 二进制文件通常是指数据以二进制形式存储的文件,这种格式通常不是自描述的,需要特定的程序来解析。
应用场景: 适用于需要高效率读写和存储原始数据的场景,如某些特定的应用程序或系统间的数据传输。
Parquet
定义: Parquet是一个列存储的文件格式,被设计为与Hadoop生态系统兼容,支持嵌套数据结构。
特点: 高效的压缩和编码技术,优化了对列的访问。
应用场景: 适用于需要高效读写大量列式数据的场景,特别是使用Spark或Hive进行数据分析和处理时。
Parquet 的优点包括:
• 列裁剪:只读取需要的列,实现⾼效的列扫描,减少 IO 操作;
• 谓词下推:因为 Parquet 中记录了每⼀个 Row group 的列统计信息,包括数值列
的 max/min,字符串列的枚举值信息。这样可以从源头过滤掉不符合条件的数据,只读取需要的数据,进⼀步减少 IO 操作。
• 更⾼效的压缩与编码:因为同⼀列的数据类型相同,所以可以针对不同列使⽤更合适的压缩与编码⽅式,降低磁盘存储空间。
Avro
定义: Avro是Apache Hadoop项目的一部分,是一个数据序列化框架,提供了丰富的数据结构和紧凑的二进制格式。
特点: 支持数据的自描述性,可以自动处理数据的序列化和反序列化。
应用场景: 适用于需要跨语言操作数据的场景,以及在Hadoop生态系统中进行数据交换和存储。
Avro 的优点包括:
• ⽀持模式演进。 它可以处理类似缺少字段、添加字段和更改字段等的模式更改。
• ⽀持跨编程语⾔实现。
• ⽀持复杂的数据结构,如数组(arrays),枚举类型(enums),maps 和unions。
ORC (Optimized Row Columnar)
定义: ORC是一个高效的列存储和压缩文件格式,专为Hadoop、Hive和Spark设计。
特点: 优化了读写性能,支持复杂的嵌套数据类型,提供了多种压缩和编码选项。
应用场景: 适用于需要高效存储和查询大数据集的场景,特别是使用Hive或Spark SQL进行交互式查询时。
OCR 的优点包括:
• 有多种⽂件压缩⽅式,并且有着很⾼的压缩⽐。
• 提供了多种索引,row、group、index、bloom、filter、index。
• ⽀持复杂的数据结构。
• ⽀持事务 ACID。
• ⽀持谓词下推。
应用场景区别
二进制格式: 更多用于系统级的数据存储和传输例如常见的关系型数据库,不是为大数据平台特别优化的。
Parquet: 由于其列存储特性,非常适合于分析型应用,特别是当查询涉及到大量列的选择和过滤操作时。
Avro: 适合于需要跨不同系统和语言进行数据交换的场景,特别是在数据序列化和反序列化方面需要灵活性时。
ORC: 由于其优化的读写性能,非常适合于需要快速查询响应的交互式数据分析环境。
1、Apache Atlas :
Apache Atlas 是一个提供数据治理和元数据管理框架的开源项目,它是Hadoop生态系统的一部分。 Atlas 支持对各种Hadoop和非Hadoop元数据类型的管理,并且提供了丰富的REST API进行集成。 它能够实现数据血缘的追溯到字段级别,并对权限有很好的控制。 Atlas 使用Hbase存储元数据,Solr实现索引,还包括Ingest/Export组件、类型系统、图形引擎等核心机制。
Range 通常指的是Apache Ranger,它是一个数据权限管理和数据访问控制的框架。
Ranger 提供了细粒度的访问控制,支持角色基于的访问控制,并能够与多种数据源集成。
它能够记录和监控数据访问活动,生成访问审计报告,帮助企业满足合规性要求。
3、DataHub:
DataHub 是LinkedIn开源的元数据搜索和发现工具,后继发展为一个全面的元数据平台。 DataHub 提供了端到端的数据发现、数据可观察性和数据治理功能。 它支持实时的元数据捕捉框架,可以实时感应元数据的变化,并支持标签、术语表、业务域等元数据的管理。 DataHub 还提供了丰富的权限支持,并且具有跨数据库、数据仓库、数据湖、数据可视化工具的搜索与发现功能。
向量数据库的作用:
1、高效的相似性搜索:向量数据库能够快速检索与查询向量最相似的向量。
2、高维数据索引:它们使用特定的数据结构来组织高维空间中的数据点,以实现快速访问。
3、支持机器学习和深度学习:向量数据库经常与机器学习模型配合使用,用于存储和检索模型生成的嵌入向量。
4、多模态数据处理:能够处理和关联来自不同数据源(如图像、文本和声音)的数据。
应用场景:
1、推荐系统:通过分析用户行为和偏好,提供个性化推荐。
2、图像和视频检索:通过视觉特征的向量化,实现快速的图像和视频搜索。
3、自然语言处理:在文本分析和语义搜索中使用文本向量。
4、生物信息学:用于基因序列分析和蛋白质结构预测。
5、社交媒体分析:分析社交媒体数据,识别模式和趋势。
6、实时监控和欺诈检测:实时分析数据流,检测异常行为。
开源向量数据库的特性:
Milvus:
提供高效的向量检索能力,适合机器学习和人工智能领域。
支持多种索引类型,如倒排索引、HNSW、IVF等。
支持多种相似度度量方法,包括欧氏距离和余弦相似度。
可扩展性强,支持云环境部署,具有云原生支持。
提供多种语言的SDK,易于集成和使用。
Chroma:
优化了查询处理过程,支持实时数据查询和更新。
适合在Jupyter Notebook上进行开发、测试和生产。
特别适合处理多媒体内容,如音频和视频搜索。
Weaviate:
使用图数据结构来组织数据,支持向量索引和近似最近邻搜索。
集成了机器学习模型,如Transformer,用于自动向量化。
架构模块化,可扩展,支持自定义模块。
提供RESTful API和GraphQL接口,以及多种客户端库。
图数据库的作用:
处理复杂关系:图数据库能够高效地处理和查询高度连接的数据和复杂的关系网络。 深度关系查询:图数据库能够快速进行深度关系查询,找出多跳关系。 模式识别:图数据库适用于识别社交网络、推荐系统等场景中的模式和社区。 实时数据处理:许多图数据库支持实时数据的插入、更新和查询。 路径搜索和分析:图数据库能够快速找到图中的最短路径、循环等。
主要应用场景:
社交网络分析:分析用户关系、社交圈、影响力分析等。 推荐系统:基于用户行为和偏好提供个性化推荐。 欺诈检测:在金融领域,用于检测信用卡欺诈、保险欺诈等。 知识图谱:构建和查询大规模的知识图谱,用于问答系统、智能助手等。 网络安全:用于网络安全威胁分析、攻击模式识别等。 供应链管理:追踪产品流向、管理复杂的供应链网络。
开源图数据库的特点:
Neo4j:
是一个原生图数据库,专为图数据的存储和查询进行了优化。 支持“无索引邻接(index-free adjacency)”特性,提供快速的关系查询。 提供Cypher查询语言,专门用于图数据的查询。
JanusGraph:
是一个可扩展的分布式图数据库,可以与多种存储后端(如Apache Cassandra、HBase等)集成。 支持Apache TinkerPop图计算框架,允许进行复杂的图算法计算。 提供对多种索引后端的支持,如Elasticsearch、Solr等。
TuGraph:
是一个分布式图数据库,由蚂蚁金服开发。 支持PB级别的大规模图数据处理。 提供了对Gremlin查询语言的支持。
ByteGraph:
由字节跳动开发的分布式图数据库。 专为处理大规模图数据而设计,支持高并发访问和水平扩展。 支持多种图算法,适用于复杂的图分析场景。
这些图数据库各有特点,用户可以根据自己的需求选择合适的图数据库进行开发和部署。
OLAP分析引擎
OLAP(在线分析处理)分析引擎是一种数据库管理系统,它专门设计用于快速响应多维数据的复杂查询、聚合和分析操作。OLAP引擎通常用于数据仓库系统,支持业务分析、决策支持系统和数据挖掘活动。
OLAP分析引擎的关键特性:
1、多维数据模型:OLAP引擎使用多维数据模型(如星型模型或雪花模型)来组织数据,使得数据可以按照不同的维度和层次结构进行分析。
2、预聚合技术:通过预计算和存储汇总数据,OLAP引擎能够快速响应汇总查询。
3、快速查询性能:OLAP引擎优化了读取操作,可以快速执行数据的切片、切块(slice-and-dice)和其他多维分析操作。
4、数据立方体:支持数据立方体操作,允许用户从不同角度查看和分析数据。
5、下钻和上卷:允许用户深入查看详细数据(下钻)或查看汇总数据(上卷)。
6、并行处理:现代OLAP引擎支持并行处理,以提高查询性能和缩短响应时间。
开源的OLAP分析引擎的对比分析可以参见文章《常见OLAP分析引擎的对比分析》
数据处理引擎
主要作用:
主要作用:
以上就是数据湖仓的开源技术栈,文中所述都是常见的技术框架,可以根据实际需求进行技术选型。
往期数据平台历史热门文章:
基于DataOps的数据开发治理:实现数据流程的自动化和规范化
往期AIGC历史热门文章: