大数据架构的演进历程

对于大部分人来说,大数据架构所涉及的概念及术语繁多且复杂。如何将这些混乱的词汇转化为有机思维,使其可以通过横向切面、纵向切片的方式呈现出来是我们必须思考的一个问题。本章将通过对大数据核心架构类型进行梳理,以及通过对不同阶段基础选型工具的讲解,带大家详细了解大数据架构的演进历程。

基础知识介绍

MPP 架构 & 分布式架构

  • MPP 架构

MPP 大规模并行处理结构 (Massivly Parallel Processing)指将任务并行分散到多个 SMP 节点,每个节点计算完成后,将各自部分的结果汇总在一起得到最终的结果。

由于 MPP 在数据库领域应用较为广泛,所以在事务一致性方面要求比较高。从总体来讲,MPP 的一致性>可靠性>容错性。在外部的一些情况下,在能保证 MPP 一致性的时候必须保证一致性,否则就失去了数据库定位的这个本质。

  • 分布式架构

分布式架构 (Hadoop 架构/批处理架构)指集群中各节点实现自治,即独立运行局部应用;MPP 架构无法做到节点自治,它只能作为整体对外提供服务。分布式架构 (Hadoop 架构/批处理架构)集群中各节点实现自治,即独立运行局部应用;MPP 架构无法做到节点自治,它只能作为整体对外提供服务。

分布式架构更多关注的是“分而治之”,它要保证的是整体节点之间的一个平衡,所以从整体优先级来讲,分布式架构的容错性>可靠性>一致性。

总体来讲,我们平时了解到的分布式架构一般指的就是 Hadoop 系列,集群以及一些数据库则指的是MPP。

OLAP 面向数据仓库与OLTP面向事务数据库

在线分析处理 OLAP(On-Line Analytical Processing) 应用于数据仓库领域,支持复杂查询的数据分析,侧重于为业务提供决策支持(DSS);在线事务处理 OLTP(On-Line Transaction Processing) 应用于在线业务交易系统,支持频繁的在线操作(增删改)、事务特性。

总体来讲,OLAP 侧重于事务的计算、 BI 分析、智能决策;而 OLTP 更多地是保证事务的一致性,比如在线交互系统中的增删改操作。

分布式架构如何“拆层”

分布式架构分为分布式消息队列层、分布式计算引擎层、分布式存储架构层以及分布式SQL引擎层和分布式配置管理层。本章中的数据架构侧重点则会统一集中在分布式计算、分布式存储和分布式 SQL 引擎三大块,下面我们将从分布式存储切入讲解。

Hadoop生态环境

由于上述所说的分布式架构和批处理均是基于 Hadoop 生态环境,所以上文所描述的分层逻辑也可以套在 Hadoop 生态中。底层 HDFS 就是刚才所说的分布式存储,中间层 MapReduce 就是分布式计算,而Hive 指的就是分布式 SQL。

作为一个先驱型的技术工具,Hadoop 被广泛应用于业界各个领域之中。2004年 Hadoop 发布了第一个版本,即 HDFS 和 MapReduce,直到 2011 年 Hadoop 1.0.0 版本正式发布,在此期间,HDFS 和MapReduce 也完成了之前基于 MPP 数据库做不到的那些能力,比如多少个节点计算多少个数据量。时间跨度从 2011 年至 2016 年,版本跨度从 1.0.1 到 2.7.0,短短五年时间,Hadoop 更新了将近 3 个大版本,这段期间可以说是 Hadoop 的爆发期。而从 2017 年到 2021 年,Hadoop 只跨越了 3 个小版本,即从 3.0.0 到 3.3.1。从上述的版本发布频率我们可以看到 Hadoop 生态系统是一直在持续不断地完善。

MPPDB 与 Hadoop、传统数仓库特性对比

下面我们将对 MPPDB 与 Hadoop 以及传统数仓库进行横向对比。 MPP 对应的是数据库,Hadoop 对应的是分布式集群,两者之间是有共性的。从存储侧来讲,MPP 的运维复杂度、扩展能力以及运维成本等特性基本都处于中等,而 Hadoop 整体的性能都是比较优势的,但由于 Hadoop 对技术的要求较高,所以对于一些初创公司或者技术沉淀不足的一些企业,也是一种挑战。

MPP 主要实现两个功能点,一是消除共享资源,二是支持并行计算。MPP 并行结构加上 HDFS 分布式存储,原则上就是一个基于 Hadoop 生态的 Hive 分布式 SQL,达到了刚才所说基于 HDFS 并行处理的分布式架构能力。

总体来讲,MPP 和 Hadoop 之间既有关联又有区别,区别的唯一性就是 Hadoop 有自已完整的生态。

实时计算类选型特性对比

ClickHouse 是基于 OLAP 场景需求出发,全新的、MPP 架构风格的高效列式数据库管理系统,实现了数据有序存储、主键索引、稀疏索引、数据 Sharding、数据 Partitioning、TTL、主备复制等丰富功能,属于分析型数据库。

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使海量数据具有搜索、分析和探索的能力。通过充分利用 Elasticsearch 的水平伸缩性,使价值密度极低的海量数据在生产环境变得更有价值。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。

Druid 是一个为 OLAP 查询需求而设计的开源大数据系统,Druid 提供低延时的数据插入、实时的数据查询能力。

分布式 SQL 引擎特性对比

Spark(SQL on Hadoop)中使用 Scala 语言开发的类 MapReduce 通用并行框架,拥有 MapReduce 所具有的优点,专为大规模数据处理而设计的、快速通用的计算引擎。

注:MapReduce 面向磁盘、Spark 面向内存。

大数据架构历程

  • 批式架构

批式大数据架构也称离线大数据架构,具备大数据处理能力,但数据处理的时效性太差。

  • 流式架构

流式大数据架构相比批式大数据架构,删除了 ETL 过程、通过数据通道得到数据流,以消息队列的方式将处理结果推送至数据消费者;舍弃了离线批量处理模式,但数据保存周期较短;若历史数据场景或复杂数据场景参与计算时,实现难度非常大。

  • Lambda 架构

Lambda 数据架构在批式大数据架构基础上增加了实时计算的链路,由数据服务层完成离线与实时结果的合并,流处理计算指标时,批处理依然计算,最终以批处理为准,即每次批处理计算后会覆盖流处理的结果。

  • Kappa 架构

Kappa 数据架构在 Lambda 架构基础上进行了优化,删除了批处理层(Batch Layer)的架构,将数据通道以消息队列进行替代;使用流式重新处理历史数据的吞吐能力会低于批处理,需要增加计算资源来弥补。

  • 实时 OLAP 架构

实时 OLAP 变体架构是对 Kappa 数据架构的进一步演化,是将聚合分析计算由 OLAP 引擎承担,减轻实时计算部分的聚合处理压力。

  • 优点:自由度高,满足数据分析师的实时自助分析需求,减轻了计算引擎的处理压力。
  • 缺点:消息队列中保存了存量数据,于是将计算部分的压力转移到了查询层。

数据架构特性对比

下图为具有演进相关性的 Lambda、Kappa、实时 OLAP 变体架构对比。

如何理解湖仓一体

湖仓一体架构演进史

湖仓一体首先就是数据仓库,它要做的是把数据进行分层,需要将数据先清洗再入仓,此时,所有的数据已经失去了原本的价值;而数据湖是将数据先入库,随后再根据业务需要对数据进行加载转化,其优点在于保证需求变化的同时,任何的数据在底层依然可以存储下来,这也是数据湖的一个价值这也是数据湖的重要价值。

而湖仓一体就是将数据湖与数据仓库进行结合,数据湖是对存储层数据多样化能力的完善。

  • ETL 抽取-转换-加载(Extract-Transform-Load),先清洗(消耗内存)再入库 。
  • ELT 抽取-加载-转换(Extract-Load-Transform),先入库(临时表)再清洗 。

数据湖与数据仓库的互补关系

数据湖本身支持多种计算引擎以及存储计算分离,保障了存储的时候数据是完整的,计算的时候和存储完全没关系,可以按照计算需求去加载数据。而数据仓库依然保持面向主题、面向集成、稳定性以及动态性。

技术工具选型策略

湖仓一体设计时需要考虑以下因素;

  • 是否满足业务需求:技术选型并非只要求大而全,而是根据业务需求进行匹配,选择功能覆盖度最合适的;
  • 关注成熟度/流行度:结合开源社区活跃度,具体可查看 Github Star 数;
  • 技术栈落地成本:结合架构复杂度及已有开发经验,把控使用成本;
  • 技术栈一致性:结合本公司技术栈的一致性、相关性,即代码易维护性;
  • 业界使用案例:复用前任厂商的填坑经验

下图为各技术工具成熟度/流行度数据列表:

数据湖工具选型特性对比

Hudi(Hadoop Upserts anD Incrementals)是基于 Spark2.x 管理存储在 HDFS 上的大型分析数据集,支持在 Hadoop 上执行诸如更新、插入和删除之类的操作, 支持:读优化表(Read Optimized Table)和近实时表(Near-Real-Time Table)。

Iceberg 是一个面向海量数据分析场景的开放表格式(Table Format). 定义中所说的表格式(Table Format), 可以理解为元数据以及数据文件的一种组织方式, 处于计算框架(Flink, Spark...)之下, 数据文件之上。

Delta Lake 是一个存储层,为 Apache Spark 和大数据 Workloads 提供 ACID 事务能力,其通过写和快照隔离之间的乐观并发控制(Optimistic Concurrency Control),在写入数据期间提供一致性的读取,从而为构建在 HDFS 和云存储上的数据湖(Data Lakes)带来可靠性。

湖仓一体蓝图方案

基于 Hadoop 的 HDFS 存储,不仅可以存储结构化数据,还可以存储非结构化数据,并且对于历史数据和实时数据,在 Hive 上可以进行全量存储和以后的数据回溯。

湖仓一体方案预研理由

  • Hudi 集成能力:Hudi 拥有良好的 Upsert 能力以及支持对接 Flink 增量处理的框架。
  • Flink 技术沉淀:云智慧自己维护了部分 Flink 引擎开发,已支撑数据产品的实时计算。
  • 应对突发需求:对于突发的业务需求,可使用即席查询 Presto 满足查询。
  • 满足近期目标:支持实时获取数据到 Hive,间隔时间在分钟级别,并支持 Upsert。

了解更多

云智慧以开源集轻量级、聚合型、智能运维为一体的综合运维管理平台 OMP(Operation Management Platform) ,具备纳管、部署、监控、巡检、自愈、备份、恢复等功能,可为用户提供便捷的运维能力和业务管理,在提高运维人员工作效率的同时,极大提升业务的连续性和安全性。

点击下方地址链接,欢迎大家给 OMP 点赞送 Star,了解更多相关内容~

GitHub地址:https://github.com/CloudWise-OpenSource/OMP

Gitee地址:https://gitee.com/CloudWise/OMP

03-05 23:21