加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据主流处理架构介绍

发布时间:2022-11-17 18:00:39 所属栏目:大数据 来源:互联网
导读: 各行各业都开始了大数据之路,大量的数据处理,靠人力那是靠不住的,得依靠计算机来。那这自然是少不了程序猿的。那么程序员GG们是如何简洁高效的处理利用这些大数据的呢?
好比普通的web服

各行各业都开始了大数据之路,大量的数据处理,靠人力那是靠不住的,得依靠计算机来。那这自然是少不了程序猿的。那么程序员GG们是如何简洁高效的处理利用这些大数据的呢?

好比普通的web服务应用大数据存储架构,有其对于的微服务架构一样,大数据处理也有其对应的处理架构,且这些架构和微服务处理机构类似,都是为了能够满足现实的要求,那么大数据架构有哪些关键特性是需要满足的,主要如下:

1.容错性和健壮性: 分布式系统所必须的,好比微服务架构,你无法保证肯定不出错但也不能总出错

2.低延迟:很多应用对于读和写操作的延时要求非常高,要求对更新和查询的响应是低延时的。

3.横向扩容:数据的增幅增速是惊人的,系统需要能通过横向拓展满足与日俱增的数据增量

4.可扩展:扩展新功能时付出较少的代价

5.方便查询:大数据系统本质还是需要输出的,输出的数据需要方便查询

6.易于维护

针对上述的这些特性要求,大佬们早已设计出了一些架构和处理框架,让我们一起来了解下。

目前主流的大数据处理架构,这里就讲两个: Lambda Architecture 和 Kappa Architecture

需要注意的是,Lambda 和 Kappa两大架构都不是一个具有实体的软件产品,而是一个指导大数据系统搭建的架构模型。因此,用户可以根据自己的需要,在架构模型中任意集成Hadoop,Hbase,Kafka,Storm,Spark、Flink等各类大数据组件。

Lambda 架构

Lambda架构是Nathan Marz提出的一个大数据处理框架。该框架的做法是将大数据系统架构拆分成了三层:

大数据 数据存储_大数据存储架构_大数据存储

Batch Layer:该层主要利用分布式处理系统处理大批量的数据,在数据集上预先计算查询函数,并构建查询所对应的Batch View。即所谓的批处理,适合处理离线数据。这一层中常用的框架是 Apache Hadoop这一套,存储一般用 Elephant DB, Apache Impala, SAP HANA 或 Apache Hive

Speed Layer :该层的目的是提供低延时的 Real-time View,处理的都是实时的增量数据。

这一层中常用的流数据处理框架有Apache Storm, Apache Spark, Apache Flink. 输出通常是存储在高速的 NoSql 数据库中。存储一般用 Elasticsearch

Serving Layer:Serving Layer 用于响应用户的查询请求,它将 Batch Views 和 Real-time Views 的结果进行了合并,得到最后的结果。

这一层通常就是使用的 Apache Druid,存储一般用 Apache Cassandra, Apache HBase, MongoDB

结合框架后,一个可能的架构:

大数据存储_大数据存储架构_大数据 数据存储

优点:

同时支持实时和批处理业务(既保证了低延迟又保证了准确性)

缺点:

1.Lambda 架构需要在两个不同的 API(application programming interface,应用程序编程接口)中对同样的业务逻辑进行两次编程:一次为批量计算的系统,一次为流式计算的系统。针对同一个业务问题产生了两个代码库,各有不同的漏洞。这种系统实际上非常难维护。

2.随着数据增量的增大,T+1 的批处理计算时间可能不够(当天的数据,一个晚上可能处理不完)

3.实时与批量计算结果不一致引起的数据口径问题

Kappa 架构

Lambda 架构需要维护两套代码,两套系统(批处理和实时处理);在某些情况下,这是非常不划算且没必要的,为什么实时流数据用后就丢弃,为什么不用流计算系统来进行全量数据处理从而去除Batch Layer这一层?

于是,Jay Kreps 在 2014 提出了Kappa 架构,它可以看做是 Lambda 架构的简化版,就是讲 Lambda 架构中的批处理模块移除,移除后如下:

大数据 数据存储_大数据存储架构_大数据存储

其核心思想就是,使用系统( eg. kafka )保存历史消息数据, 然后通过回放数据,利用 Real-time Layer 这一层的流处理框架( eg. Flink , Spark Streaming , Storm )来完成业务上的批处理需求。核心步骤如下:

1.数据需要可以被重放(重新处理)。例如, 用 Kafka 来保存数据,你需要几天的数据量就保存几天。

2.用新实例重新处理计算重放的数据。即当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

3.当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。

Kappa 和 Lambda 对比

大数据 数据存储_大数据存储_大数据存储架构

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!