1.Lambda架构背景介绍Lambda架构是由Storm 的作者Nathan Marz 提出的一个实时大数据处理框架。Marz在Twitter 工作期间开发了著名的实时大数据处理框架Storm ,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成。

大数据系统的Lambda架构

Lambda架构的目标是设计出一个能满足实时大数据系统关键特性的架构,包括有:高容错、低延时和可扩展等。Lambda架构整合离线计算和实时计算,融合不可变性(Immunability),读写分离和复杂性隔离等一系列架构原则,可集成Hadoop,Kafka ,Storm ,Spark ,Hbase 等各类大数据组件。

2.大数据系统的关键特性Marz认为大数据系统应具有以下的关键特性:

Robust and fault-tolerant (容错性和鲁棒性):对大规模分布式系统来说,机器是不可靠的,可能会当机,但是系统需要是健壮、行为正确的,即使是遇到机器错误。除了机器错误,人更可能会犯错误。在软件开发中难免会有一些Bug ,系统必须对有Bug 的程序写入的错误数据有足够的适应能力,所以比机器容错性更加重要的容错性是人为操作容错性。对于大规模的分布式系统来说,人和机器的错误每天都可能会发生,如何应对人和机器的错误,让系统能够从错误中快速恢复尤其重要。

Low latency reads and updates (低延时):很多应用对于读和写操作的延时要求非常高,要求对更新和查询的响应是低延时的。

Scalable(横向扩容):当数据量/ 负载增大时,可扩展性的系统通过增加更多的机器资源来维持性能。也就是常说的系统需要线性可扩展,通常采用scale out (通过增加机器的个数)而不是scale up(通过增强机器的性能)。

General (通用性):系统需要能够适应广泛的应用,包括金融领域、社交网络、电子商务数据分析等。

Extensible(可扩展):需要增加新功能、新特性时,可扩展的系统能以最小的开发代价来增加新功能。

Allows ad hoc queries (方便查询):数据中蕴含有价值,需要能够方便、快速的查询出所需要的数据。

Minimal maintenance (易于维护):系统要想做到易于维护,其关键是控制其复杂性,越是复杂的系统越容易出错、越难维护。

Debuggable(易调试):当出问题时,系统需要有足够的信息来调试错误,找到问题的根源。其关键是能够追根溯源到每个数据生成点。

3.数据系统的本质为了设计出能满足前述的大数据关键特性的系统,我们需要对数据系统有本质性的理解。我们可将数据系统简化为:

数据系统 =数据 +查询

从而从数据和查询两方面来认识大数据系统的本质。

3.1.数据的本质

3.1.1.数据的特性:When & What

我们先从“数据”的特性谈起。数据是一个不可分割的单位,数据有两个关键的性质:When和What.

When是指数据是与时间相关的,数据一定是在某个时间点产生的。比如Log日志就隐含着按照时间先后顺序产生的数据,Log 前面的日志数据一定先于Log后面的日志数据产生;消息系统中消息的接受者一定是在消息的发送者发送消息后接收到的消息。相比于数据库,数据库中表的记录就丢失了时间先后顺序的信息,中间某条记录可能是在最后一条记录产生后发生更新的。对于分布式系统,数据的时间特性尤其重要。分布式系统中数据可能产生于不同的系统中,时间决定了数据发生的全局先后顺序。比如对一个值做算术运算,先+2,后*3,与先*3,后+2,得到的结果完全不同。数据的时间性质决定了数据的全局发生先后,也就决定了数据的结果。

What是指数据的本身。由于数据跟某个时间点相关,所以数据的本身是不可变的(immutable ),过往的数据已经成为事实(Fact),你不可能回到过去的某个时间点去改变数据事实。这也就意味着对数据的操作其实只有两种:读取已存在的数据和添加更多的新数据。采用数据库的记法,CRUD就变成了CR,Update和Delete本质上其实是新产生的数据信息,用C 来记录。

3.1.2.数据的存储:Store Everything Rawly and Immutably

根据上述对数据本质特性的分析,Lamba 架构中对数据的存储采用的方式是:数据不可变,存储所有数据。

通过采用不可变方式存储所有的数据,可以有如下好处:

简单。采用不可变的数据模型,存储数据时只需要简单的往主数据集后追加数据即可。相比于采用可变的数据模型,为了Update操作,数据通常需要被索引,从而能快速找到要更新的数据去做更新操作。

应对人为和机器的错误。前述中提到人和机器每天都可能会出错,如何应对人和机器的错误,让系统能够从错误中快速恢复极其重要。不可变性(Immutability)和重新计算(Recomputation )则是应对人为和机器错误的常用方法。采用可变数据模型,引发错误的数据有可能被覆盖而丢失。相比于采用不可变的数据模型,因为所有的数据都在,引发错误的数据也在。修复的方法就可以简单的是遍历数据集上存储的所有的数据,丢弃错误的数据,重新计算得到Views (View的概念参考4.1.2 )。重新计算的关键点在于利用数据的时间特性决定的全局次序,依次顺序重新执行,必然能得到正确的结果。

当前业界有很多采用不可变数据模型来存储所有数据的例子。比如分布式数据库Datomic ,基于不可变数据模型来存储数据,从而简化了设计。分布式消息中间件Kafka ,基于Log 日志,以追加append-only 的方式来存储消息。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2023-08-24 09:38:00
大数据资讯 关注县域数据能力建设,抢占产数业务发展先机
2023年《数字中国建设整体布局规划》正式发布,数据能力已成为我国区域发展的底座和创新引擎。 <详情>
2023-03-30 11:15:07
云资讯 分布式时代已至,数据如何更有价值?
无论是连通各大集群内大型超大型数据中心,还是连接边缘侧小型、边缘数据中心,分布式云计算都已成为这张算力网络最重要的支撑。在此背景下,云计算步入分布式时代。 <详情>
2023-03-01 19:27:00
市场情报 FlagOpen大模型技术开源体系,开启大模型时代“新Linux”生态
大数据+大算力+强算法=大模型”是当前人工智能发展的主要技术路径。语言大模型ChatGPT成为现象级应用,人工智能进入普及应用的新时期。 <详情>
2023-01-09 09:36:46
大数据资讯 我国互联网广告数据匿名实施服务正式上线
《指南》形成的“技术保障、评估规制、过程控制”的互信制衡机制,适用于各类互联网广告业务,包括广告投放、程序化交易、广告监测等应用场景下的数据匿名化处理。 <详情>
2022-12-30 10:10:19
大数据资讯 中国移动磐维数据库正式发布
未来,随着数据库功能和稳定性等进一步增强,磐维数据库将在中国移动内外部的广泛应用中积累更多复杂业务场景实践经验,进一步提升数据库产品的核心技术能力,助力数智化转 <详情>