大数据系统的Lambda架构

在大数据处理系统中,如何有效地将raltim与batchjob结合起来,既发挥前者对响应的实时性,又能解决对海量数据的分析与处理?答案就是Lambda架构思想。

??

MathanMarz的大作BigData:Principlsandbstpracticsofscalablral-timdatasystms介绍了LabmdaArchitctur的概念,用于在大数据架构中,如何让ral-tim与batchjob更好地结合起来,以达成对大数据的实时处理。

传统系统的问题

在传统数据库的设计中,无法很好地支持系统的可伸缩性。当用户访问量增加时,数据库无法满足日益增长的用户请求负载,从而导致数据库服务器无法及时响应用户请求,出现超时错误。

解决的办法是在Wb服务器与数据库之间增加一个异步处理的队列。如下图所示:

当WbSrvr收到页面请求时,会将消息添加到队列中。在DB端,创建一个Workr定期从队列中取出消息进行处理,例如每次读取条消息。这相当于在两者之间建立了一个缓冲。

但是,这一方案并没有从本质上解决数据库ovrload的问题,且当workr无法跟上writr的请求时,就需要增加多个workr并发执行,数据库又将再次成为响应请求的瓶颈。一个解决办法是对数据库进行分区(horizontalpartitioning或者sharding)。分区的方式通常以Hash值作为ky。这样就需要应用程序端知道如何去寻找每个ky所在的分区。

问题仍然会随着用户请求的增加接踵而来。当之前的分区无法满足负载时,就需要增加更多分区,这时就需要对数据库进行rshard。rsharding的工作非常耗时而痛苦,因为需要协调很多工作,例如数据的迁移、更新客户端访问的分区地址,更新应用程序代码。如果系统本身还提供了在线访问服务,对运维的要求就更高。稍有不慎,就可能导致数据写到错误的分区,因此必须要编写脚本来自动完成,且需要充分的测试。

即使分区能够解决数据库负载问题,却还存在容错性(Fault-Tolranc)的问题。解决办法:

改变quu/workr的实现。当消息发送给不可用的分区时,将消息放到“pnding”队列,然后每隔一段时间对pnding队列中的消息进行处理。

使用数据库的rplication功能,为每个分区增加slav。

问题并没有得到完美地解决。假设系统出现问题,例如在应用系统代码端不小心引入了一个bug,使得对页面的请求重复提交了一次,这就导致了重复的请求数据。糟糕的是,直到24小时之后才发现了该问题,此时对数据的破坏已经造成了。即使每周的数据备份也无法解决此问题,因为它不知道到底是哪些数据受到了破坏(corrupiton)。由于人为错误总是不可避免的,我们在架构时应该如何规避此问题?

现在,架构变得越来越复杂,增加了队列、分区、复制、重分区脚本(rshardingscripts)。应用程序还需要了解数据库的schma,并能访问到正确的分区。问题在于:数据库对于分区是不了解的,无法帮助你应对分区、复制与分布式查询。最糟糕的问题是系统并没有为人为错误进行工程设计,仅靠备份是不能治本的。归根结底,系统还需要限制因为人为错误导致的破坏。

数据系统的概念

大数据处理技术需要解决这种可伸缩性与复杂性。首先要认识到这种分布式的本质,要很好地处理分区与复制,不会导致错误分区引起查询失败,而是要将这些逻辑内化到数据库中。当需要扩展系统时,可以非常方便地增加节点,系统也能够针对新节点进行rbalanc。

其次是要让数据成为不可变的。原始数据永远都不能被修改,这样即使犯了错误,写了错误数据,原来好的数据并不会受到破坏。

何谓“数据系统”?MathanMarz认为:

如果数据系统通过查找过去的数据去回答问题,则通常需要访问整个数据集。因此可以给datasystm的最通用的定义:

Qury=function(alldata)

一个大数据系统必须具备的属性包括:

健壮性和容错性(Robustnss和FaultTolranc)

低延迟的读与更新(LowLatncyradsandupdats)

可伸缩性(Scalability)

通用性(Gnralization)

可扩展性(Extnsibility)

内置查询(Adhocquris)

维护最小(Minimalmaintnanc)

可调试性(Dbuggability)

Lambda架构

Lambda架构的主要思想就是将大数据系统构建为多个层次,如下图所示:

理想状态下,任何数据访问都可以从表达式Qury=function(alldata)开始,但是,若数据达到相当大的一个级别(例如PB),且还需要支持实时查询时,就需要耗费非常庞大的资源。

一个解决方式是预运算查询函数(pr







































北京什么时候治疗白癜风
白癜风治疗花费



转载请注明:http://www.92nongye.com/zyjs/204614830.html