简介
大多数企业依托可扩展的渠道和其服务或产品的数据化来坚持市场竞争力。随着来自不同来历的数据的激增,其数量、速度和品种各不相同,企业需求新的数据战略。
因此,人们认为需求数据管道将来自一切不同来历的数据整合到一个一起的目的地,以便进行快速剖析,或者在衔接的运用程序和体系之间处理和流式传输数据。
这儿简略解释两种经典数据处理架构和一个通用编程模型,并例举他们的组件和运用场景,最后做一个简略的功用比照。
1 为什么要数据处理结构
这些体系结构为处理、存储和剖析数据供给了结构化结构,使开发人员能够构建可弹性、高效和可靠的数据驱动运用程序。
以下是软件开发人员需求数据处理结构的一些详细原因:
- 实时数据处理
现代运用程序一般需求实时洞悉数据,例如用户行为,物联网传感器读数和金融买卖。像Kappa和Apache Beam这样的数据架构支撑实时处理流数据,为开发人员供给了构建呼应事情的运用程序的东西。
- 批处理数据处理
前史数据剖析关于理解趋势、识别模式和做出明智决策至关重要。像Lambda和Apache Beam这样的数据架构支撑批处理,允许开发人员有效地剖析大型数据集,并从前史数据中提取有价值的见解。
- 数据一致性和完整性
保护数据一致性和完整性关于保证数据驱动的运用程序的可靠性至关重要。像Lambda和Apache Beam这样的数据架构供给了保证跨不同处理阶段的数据一致性的机制,从而避免数据丢失或损坏。
- 可弹性性和功用
现代运用程序必须能够在不影响功用的情况下处理不断增加的数据量。像Kappa和Apache Beam这样的数据架构被规划为水平弹性,使开发人员能够构建能够处理大数据量而没有功用瓶颈的运用程序。
- 灵敏性和可重用性
像Apache Beam这样的数据架构为处理流数据和批处理数据供给了一致的结构,使开发人员能够跨不同的数据处理任务重用代码和组件。这减少了开发时间,提高了代码的一致性。
因此,数仓的这些结构供给了构建可弹性、高效和可靠的数据驱动运用程序所需的东西和结构。支撑实时数据处理、批处理数据剖析、数据一致性和可弹性性,使它们成为现代软件开发的必要条件。
2 常见数据处理架构
Kappa、Lambda 和 Beam 都是用于构建大数据运用的大数据架构。它们各有优缺点,适用于不同的场景。
2.1 流式的Kappa处理架构
kappa数据源可所以各品种型的流式数据,例如 Kafka、Kinesis、Apache Pulsar 等。
Kappa 是一个依据流式处理的架构,组件包含以下几个部分:
(1)实时层
- 处理输入数据,生成实时视图。
- 担任实时处理流式数据。流式处理体系可所以 Apache Spark Structured Streaming、Apache Flink、Apache Storm 等。
(2)服务层
- 运用实时视图中的成果数据集响运用户请求。存储体系可所以 Hadoop、HDFS、Amazon S3 等
Kappa具有以下长处:
实时性:Kappa 能够实时处理流式数据,适用于需求实时呼应的运用场景。
可扩展性:Kappa 能够水平扩展,适用于需求处理很多数据的运用场景。
本钱效益:Kappa 的本钱效益高,适用于需求在预算范围内布置大数据运用的场景。
原理结构:
- 比如:
一个电商网站需求实时监控用户的购物行为,并依据用户的行为进行引荐。这种场景需求实时处理很多的数据,且预算有限。Kappa 架构能够满意这些需求,将用户的购物行为实时处理,并生成引荐成果。
2.2 混合流式批处理 Lambda 架构
(1)批处理层 Batch Layer 1 存储数据集,预核算查询函数,构建批视图,批处理层担任批量处理前史数据。批处理体系可所以 Apache Spark、Apache Hive、Apache Hadoop 等。 2 一般处理离线数据
(2)加快层 Speed Layer
1 处理最近的增量数据流,不断更新实时视图,加快体系可所以 Apache Spark Structured Streaming、Apache Flink、Apache Storm 等。 2 一般用于线上处理。
(3)服务层 Serving Layer
1 兼并批视图和实时视图中的成果数据集到终究数据集,数据集存储体系可所以 Hadoop、HDFS、Amazon S3 等。
2 一般用于线上处理。
-
Lambda 是一个混合流式批处理的架构,具有以下长处:
统筹实时性和批处理:Lambda 能够同时处理流式数据和批处理数据,统筹了实时性和批处理的优势。 开发难度相对较低:Lambda 的开发难度相对较低,合适初学者运用。 保护本钱相对较低:Lambda 的保护本钱相对较低,不需求定期进行保护和升级。
- 例如
一个交际媒体网站需求实时处理用户的交际行为,并依据用户的行为进行交际引荐。这种场景需求统筹实时性和批处理,且开发难度相对较低。
Lambda 架构能够满意这些需求,将用户的交际行为实时处理,并生成引荐成果。架构组件一般例如:
2.3 通用流数据处理Beam架构
Apache Beam是谷歌开源的数据管道结构,组织可开始依据其事务需求布置 Batch 或流式处理管道,是一种更通用的编程模型,可用于处理流数据和批处理数据。
它供给了一个一致的API,允许开发人员以可移植的方法界说数据处理管道,而不考虑底层执行引擎。关于需求处理这两种数据类型的运用程序,或者需求能够在不重写代码的情况下切换执行引擎的运用程序来说,这是一个很好的挑选
- 数据源:
数据源是数据进入 Beam 架构的起点。数据源可所以各品种型的数据源,例如 Kafka、Kinesis、Apache Pulsar 等。
-
处理器: 处理器担任处理数据。处理器可所以用户自界说的处理器,也可所以 Beam 供给的标准处理器。
-
输出:
输出是处理后数据的输出方针。输出可所以各品种型的输出方针,例如 Kafka、Kinesis、Amazon S3 等。
2.3.1 组件
Beam的数据处理工作流图能够简略阐明如下:
中间处理器能够运用如:python,go,java等通用言语调用其通用接口。
Apache Beam 笼统组件
- 管道
它封装了从某个外部源读取数据、转换数据并将输出保存到某个外部存储源的整个过程。
- 存储
它界说了管道运转的数据,它可所以有界数据,也可所以无界数据。咱们依据来自任何外部体系的数据或内存中的数据创建 Pcollections。它是不可变的,必须包含相同类型的数据。
- 输入集 PTransforms(PTransforms)
它将 Pcollection(输入数据集)作为输入,对其运用一些处理函数并生成另一个 Pcollection(输出数据集)。
- 流水线 IO
它使您能够从各种外部存储体系读取或写入数据。
Beam 是一个通用的流式批处理的架构,具有以下长处:
支撑多种数据源和数据处理结构:Beam 支撑多种数据源和数据处理结构,适用于各种场景。
可扩展性强:Beam 的可扩展性强,适用于处理很多数据的运用场景。
开发效率高:Beam 的开发效率高,能够运用多种编程言语进行开发。
- 比如:
例如,一个金融机构需求处理很多的买卖数据,并进行剖析。这种场景需求支撑多种数据源和数据处理结构,且可扩展性强。Beam 架构能够满意这些需求,将买卖数据进行实时处理和批处理,并进行剖析。
3 小结
Kappa、Lambda 和 Beam 各有优缺点,适用于不同的场景。
Kappa 适用于需求实时呼应、处理很多数据且预算有限的场景。
Lambda 适用于统筹实时性和批处理、开发难度相对较低且预算有限的场景。
Beam 适用于支撑多种数据源和数据处理结构、可扩展性强且开发效率高且预算充足的场景。 在挑选大数据架构时,需求依据详细的事务需求和场景进行综合考虑。其主要优势在于其可移植的 API 层,能够在各种执行引擎或运转器中执行。
各结构功用比照如下:
功用结构 | Lambda | Kappa | Apache Beam |
---|---|---|---|
处理模型 | 混合(流 批处理) | 流处理 | 一致流和批处理 |
实时能力 | 高 | 十分高 | 高 |
批处理 | 是 | 是(有限) | 是 |
可扩展性 | 高 | 高 | 高 |
杂乱性 | 中等 | 低 | 高 |
数据一致性 | 终究一致 | 强 | 强 |
体系结构 | 混合(Batch Streaming) | 流处理 | 一致编程模型 |
执行引擎 | fixed (Apache Hadoop Apache Spark) | fixed (Apache Flink) | Pluggable (Apache Spark, Apache Flink,谷歌Cloud Dataflow) |
优势 | 可扩展性,前史数据剖析,实时处理 | 低推迟,实时处理 | 灵敏性,可移植性 |
缺点 | 杂乱性,不如Apache Beam灵敏 | 用例有限,不如Apache Beam可扩展性 | 比Lambda或Kappa更杂乱 |
运用场景 | 前史数据剖析、数据仓库、实时剖析 | 实时剖析 | 前史,实时剖析和数据管道 |