1 简介
大多数企业依靠可扩展的平台和其服务或产品的数据化来保持市场竞争力。随着来自不同来源的数据的激增,其数量、速度和种类各不相同,企业需要新的数据战略。
因此,人们认为需要数据管道将来自所有不同来源的数据整合到一个共同的目的地,以便进行快速分析,或者在连接的应用程序和系统之间处理和流式传输数据。
这里简单解释两种经典数据处理架构和一个通用编程模型,并例举他们的组件和使用场景,最后做一个简单的功能对比。
2 为什么要数据处理框架
这些体系结构为处理、存储和分析数据提供了结构化框架,使开发人员能够构建可伸缩、高效和可靠的数据驱动应用程序。
以下是软件开发人员需要数据处理框架的一些具体原因:
- 实时数据处理
现代应用程序通常需要实时洞察数据,例如用户行为,物联网传感器读数和金融交易。像Kappa和Apache Beam这样的数据架构支持实时处理流数据,为开发人员提供了构建响应事件的应用程序的工具。
- 批处理数据处理
历史数据分析对于理解趋势、识别模式和做出明智决策至关重要。像Lambda和Apache Beam这样的数据架构支持批处理,允许开发人员有效地分析大型数据集,并从历史数据中提取有价值的见解。
- 数据一致性和完整性
维护数据一致性和完整性对于确保数据驱动的应用程序的可靠性至关重要。像Lambda和Apache Beam这样的数据架构提供了确保跨不同处理阶段的数据一致性的机制,从而防止数据丢失或损坏。
- 可伸缩性和性能
现代应用程序必须能够在不影响性能的情况下处理不断增长的数据量。像Kappa和Apache Beam这样的数据架构被设计为水平伸缩,使开发人员能够构建能够处理大数据量而没有性能瓶颈的应用程序。
- 灵活性和可重用性
像Apache Beam这样的数据架构为处理流数据和批处理数据提供了统一的框架,使开发人员能够跨不同的数据处理任务重用代码和组件。这减少了开发时间,提高了代码的一致性。
因此,数仓的这些框架提供了构建可伸缩、高效和可靠的数据驱动应用程序所需的工具和框架。支持实时数据处理、批处理数据分析、数据一致性和可伸缩性,使它们成为现代软件开发的必要条件。
3 常见数据处理架构:流式的Kappa处理架构
Kappa、Lambda 和 Beam 都是用于构建大数据应用的大数据架构。它们各有优缺点,适用于不同的场景。
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 架构可以满足这些需求,将用户的购物行为实时处理,并生成推荐结果。
4 混合流式批处理 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 架构可以满足这些需求,将用户的社交行为实时处理,并生成推荐结果。架构组件通常如下所示: