1)离线大数据架构
数据仓库概念是 Inmon 于 1990 年提出并给出了完整的建设方法。随着互联网时代来临,数据量 暴增,开始使用大数据工具来代替经典数仓中的传统工具,此时仅仅是工具的取代,架构上并没有 根本的区别,可以把这个架构叫做离线大数据架构。后来随着业务实时性要求的不断提高,人们开 始在离线大数据架构基础上加了一个加速层,使用流处理技术直接完成那些实时性要求较高的指标 计算,这便是 Lambda 架构,当前部分大数据平台收到固有业务发展等的约束,仍然采用此类型的架 构。再后来,实时的业务越来越多,事件化的数据源也越来越多,实时处理从次要部分变成了主要 部分,架构也做了相应调整,出现了以实时事件处理为核心的 Kappa 架构。整体架构的演变由数据 量及对计算实时性的需求驱动,如下图所示: 图1:大数据架构演进 以下对离线大数据架构、Lanbda 架构、Kappa 架构做简单的介绍及对比。 1)离线大数据架构 离线大数据架构的特点: 1、数据源通过离线的方式导入到离线数仓中; 2、数据处理采用MapReduce、Hive、SparkSQL 等离线计算引擎。 架构及数据处理流程如下; 图 2:离线大数据架构 主要应用于经验状况分析、历史数据分析。 2)Lambda 架构 随着大数据应用的发展,人们逐渐对系统的实时性提出了要求,为了计算一些实施指标,就在 原来离线数仓的基础上增加了一个实时计算的链路,并对数据源做流式改造(即把数据发送到消息 队列),实时计算去订阅消息队列,直接完成指标做增量的计算,推送到下游的数据服务中去,由 数据服务层完成离线&实时结果的合并。Lambda 架构及数据处理流程如下图所示: 图 3:Lambda 架构 3)Kappa 架构 Lambda 架构虽然满足了实时的需求,但带来了更多的开发与运维工作,其架构背景是流处理引 擎还不完善,流处理的结果只作为临时的、近似的值提供参考。 后来随着 Flink 等流处理引擎的出现,流处理技术很成熟了,这是为了解决两套代码的问题。 Linkedln 的 Jay Kreps 提出了 Kappa 架构,在实时计算中可以直接完成计算,也可以跟离线数仓一 样分层,取决于指标的复杂度,各层之间通过消息队列交互(多半是不分层的),Kappa 架构可以 认为是 Lambda 架构的简化版(只要移除 Lambda 架构中的批处理部分即可)。Kappa 架构及数据处 理流程如下图: 图 4:Kappa 架构 4)Lambda 架构和 Kappa 架构的对比 Lambda 架构及 Kappa 架构均是在数据量及对实时性的需求驱动下产生的技术及架构,在当下对 数据及对实时处理需求的场景越来越多,Kappa 架构有其一定的先进性, 图5:Lambda架构与Kappa架构对比 需求推动技术的发展大数据技术架构,技术赋能解决需求,推动相关行业发展,两种架构中关键技术的演进为分布式计算相关技术的演进,以下对相关技术进行简介。 1、Spark 采用 RDD(弹性分布式数据集)模型,spark streaming 的 DStream 实际上也就是一组组小批数据 RDD 的集合, Spark 是批计算,将 DAG 划分为不同的 Stage,一个完成后才可以计 算下一个。 2、Flink 基本数据模型是数据流,以及事件(Event)序列,Flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。 两则的主要区别在于对实时处理是的微批(Micro-Bataching)及流(stream)处理,如下图所示: 图 6:流(stream)和微批(micro-batching) 两个技术在流与批的世界观也不相同 批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用 于离线统计。流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的 每个数据项执行操作,一般用于实时统计。 1、在 Spark 的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由 一个一个无限的小批次组成的。 2、在 Flink 的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没 有界限的流,这就是所谓的有界流和无界流。 图 7: 流(stream)和微批(micro-batching) Flink 此类以流为世界观的技术架构,获得的最大好处就是兼顾流批处理的同时具有极低的延迟。实现离线与实时数据一套架构处理的流批一体架构。 (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |