云智慧 AIOps 社区是由云智慧发起,针对运维业务场景,提供算法、算力、数据集整体的服务体系及智能运维业务场景的解决方案交流社区。该社区致力于传播 AIOps 技术,旨在与各行业客户、用户、研究者和开发者们共同解决智能运维行业技术难题,推动 AIOps 技术在企业中落地,建设健康共赢的AIOps 开发者生态。
大数据架构的演进历程
对于大部分人来说,大数据架构所涉及的概念及术语繁多且复杂。如何将这些混乱的词汇转化为有机思维,使其可以通过横向切面、纵向切片的方式呈现出来是我们必须思考的一个问题。本章将通过对大数据核心架构类型进行梳理,以及通过对不同阶段基础选型工具的讲解,带大家详细了解大数据架构的演进历程。
基础知识介绍
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。
写在最后
近年来,在AIOps领域快速发展的背景下,IT工具、平台能力、解决方案、AI场景及可用数据集的迫切需求在各行业迸发。基于此,云智慧在2021年8月发布了AIOps社区, 旨在树起一面开源旗帜,为各行业客户、用户、研究者和开发者们构建活跃的用户及开发者社区,共同贡献及解决行业难题、促进该领域技术发展。
社区先后 开源 了数据可视化编排平台-FlyFish、运维管理平台 OMP 、云服务管理平台-摩尔平台、 Hours 算法等产品。
可视化编排平台-FlyFish:
项目介绍:https://www.cloudwise.ai/flyFish.html
Github地址: https://github.com/CloudWise-OpenSource/FlyFish
Gitee地址: https://gitee.com/CloudWise/fly-fish
行业案例:https://www.bilibili.com/video/BV1z44y1n77Y/
部分大屏案例: