软考:大数据架构设计
大数据总结
大数据处理系统的特征
1、鲁棒性和容错性
2、低延迟读取和更新能力
3、横向扩容
4、通用性
5、延展性
6、即席查询能力
7、最少维护能力
8、可调试性
Lambda架构
批处理层
存储数据集和生成Batch View
管理主数据集,原始的,不可变的,真实的
在大数据架构设计中,批处理层是Lambda架构的核心组成部分之一,其主要功能和特点如下:
-
存储管理主数据集:批处理层负责存储
不可变的数据集
和预先批处理计算好
的视图。这意味着它处理的是历史数据
,确保数据的完整性和准确性
。 -
预先计算结果:批处理层使用分布式处理系统
预先计算结果
,通过处理所有的历史数据来实现数据的准确性。这通常涉及到大规模的数据集,需要强大的计算能力。 -
数据准确性:由于批处理层基于完整的数据集重新计算,它能够修复任何错误,并更新现有的数据视图。这保证了数据的准确性和可靠性。
-
输出存储:批处理层的
输出通常存储在只读数据库
中,更新则完全取代现有的预先计算好的视图。 -
使用技术:批处理层可以用Hadoop、Spark和Flink等框架进行计算。这些框架能够处理大规模数据集,并提供强大的数据处理能力。
-
与实时数据处理的结合:在Lambda架构中,批处理层与速度处理层(Speed Layer)相结合,以提供实时和历史数据的查询服务。速度层处理实时数据,而批处理层处理历史数据,两者的结合为用户提供了全面的数据视图。
-
数据冗余:虽然批处理层提供了数据的准确性,但也带来了数据冗余的问题,因为同样的数据可能在批处理层和速度层都被处理。
综上所述,批处理层在大数据架构中扮演着至关重要的角色,它通过处理历史数据来保证数据的完整性和准确性,同时与实时数据处理层相结合,为用户提供全面的数据分析服务。
加速层
建立索引,能快速查询,存储实时试图并处理传入的数据流,以便更新这些视图。
加速层相当于就是加速计算,只处理增量的数据集。
分层计算的特点:
1、容错性,就是在加速层可能出现的错误,可用在批处理层进行修正
2、复杂性隔离,将复杂的实时处理隔离出来,提高整个系统的鲁棒行和可靠性
3、横向扩容,支持线性可扩展
服务层
用来响应用户的查询请求。
具体实现
Hadoop用来存储主数据集
Spark构成加速层
Hbase作为服务层
Hive创建可查询的视图
Kappa架构
数据系统=数据+查询
数据的特性:When,What,也就是记录数据的版本
数据的存储:Lambda,数据是不可变的,不可变只需要在后面追加数据即可,
采用了重新处理事件的原则,有能力在业务逻辑更新的情况下重新处理以前处理过的历史数据
删除了Batch Layer的架构。数据通道已消息队列进行替代。
lambda和kappa架构的对比
Lambda架构和Kappa架构是两种不同的大数据架构,它们各自有不同的特点和适用场景。以下是它们的对比:
-
架构复杂性与维护:
- Lambda架构:包含批处理层和速度层,需要维护两套系统,这可能导致维护和管理上的复杂性增加。
- Kappa架构:通过消除批处理层,简化了架构,减少了维护的复杂性。
-
实时性与历史数据处理:
- Lambda架构:适合需要历史数据分析的场景,通过批处理层可以处理历史数据。
- Kappa架构:更侧重于实时数据处理,适合对实时性要求极高的应用。
-
容错性与一致性:
- Lambda架构:批处理层提供了强大的容错性和数据一致性保证,适合对数据准确性要求极高的场景。
- Kappa架构:依赖于流处理层的容错机制,可能在某些场景下需要额外的措施来确保数据一致性。
-
技术适应性:
- Lambda架构:由于其成熟的技术生态,可能更容易找到经验丰富的技术人员。
- Kappa架构:可能需要团队适应新的流处理技术。
-
数据冗余与存储成本:
- Lambda架构:为实现不可变的数据需要存储原始数据,数据的不断追加会带来很大的存储成本。
- Kappa架构:通过重新处理历史数据改进逻辑算法,可以减少数据冗余和存储成本。
-
开发和维护成本:
- Lambda架构:批处理层和速度层采用两套不同的技术方案,开发和维护成本都比较大。
- Kappa架构:只需要维护实时处理模块,可以降低开发和维护成本。
-
适用场景:
- Lambda架构:因其优秀的稳定性和容错性,仍被应用在众多场景中,适合需要稳健机器学习模型的场景。
- Kappa架构:适用于需要高实时性和灵活性的业务逻辑。
总的来说,Lambda架构适合需要同时处理实时和历史数据的场景,而Kappa架构则更适合对实时性要求高、历史数据处理需求相对较低的场景。选择哪种架构取决于具体的业务需求、数据处理的特点以及团队的技术能力。