暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大数据处理框架的技术演进(Kappa+时代)

译数据 2021-07-17
1275

大数据处理框架,是一个“老生常谈”的话题了。大家都很清楚,技术演进在我们信息化时代的价值。它从诞生至今,也在不断地颠覆、不断地演化。




LAMBDA -> KAPPA 技术演进

 

Lambda数据架构是在2011年由Apache Storm的创始人(Nathan Marz)首次提出。它把数据处理根据时效性的要求,分为实时数据处理和离线数据处理两个部分,实时数据处理pipeline会从消息中间件消费消息,通过类似于Spark Streaming/Storm应用对数据进行实时处理,并输出实时指标。离线数据处理是对于累积数据进行批量ETL的过程。数据以天或者小时以原始格式保存到分布式文件系统或者类似于AWS S3的云存储中,经过ETL的处理,会输出离线指标。在服务层,Query可以跨越离线和实时数据进行查询。


Lambda架构优势在于,将数据处理的需求,按照实时和离线进行区分。离线部分,可以追求更好的吞吐和准确性,实时部分,则可以获得更低的延迟。随着数据规模和数据业务的发展,Lambda架构暴露出如下的问题:

 

1.     实时与离线计算结果不一致引起的数据口径问题。因为离线和实时计算走的是两个计算框架和计算程序,算出的结果往往不同,经常看到一个数字当天看是一个数据,第二天看昨天的数据反而发生了变化。

 

2.     维护成本较大。如果在离线和实时pipeline输出相同的指标,那么上游业务逻辑和数据的变更,都需要2边同时修改上线,那么整体运维和开发成本较大。

 

3.     数据冗余导致存储开销较大。数据仓库的典型设计,会产生大量的中间结果表,造成数据快速膨胀,加大存储压力。


KAPPA架构

KAPPA架构存在的缺陷:
1. 消息中间件KAPPA不是数据仓库,存储和管理代价比较大。
2. 流式处理在低延迟和准确率之间需要取舍。流式计算框架通过支持checkpoint机制,实现错误恢复的能力。目前,流式计算往往是以At-Least Once作为数据消费和处理的保障机制,容忍一定程度的数据重复问题。这样对于输出结果而言,会出现一定的误差。
3.  Speed LayerBatch Layer输出数据的访问层很难统一。虽然两者都是同一数据源,相同处理逻辑的作业,但是它们结果会被输出到不同的位置,进一步被对外访问时,往往需要不同的查询引擎来支持。


针对KAPPA数据架构遇到的问题,近些年,技术社区给出了更好的解决方案。
1.支持底层存储和上层服务解耦的Pulsar
它不仅支持了更多的消费模式,还支持多级存储介质。最重要的是,它解决了Kafka数据扩展的效率问题,kafka 横向扩展时,需要在broker之间迁移数据;设置更长的数据周期,往往会占用大量的存储设备,不支持基于数据冷热分级存储,又使得整体存储规划困难,开销较大。反观Pulsar,它底层是分布式块存储,上层的broker,可以独立进行扩展。


2. Flink Exactly Once Semantics

例如,FlinkKafka消费,经过处理之后,把结果输出到Kafka。在这种场景下,Flink 端到端的Exactly-Once语义,是借助了Flink Checkpoint机制,Operator状态管理的能力,以及输出端(Sinker)事务的支持。另外,如果在设计Sinker能支持幂等操作,可以有效解决重复处理导致结果不正确的问题。Flink最小的处理数据的单位是消息,它比Spark StreamingMicro Batch能够更容易实现每个处理环节的Exactly-Once


3.DeltaLake/Apache Hudi/Iceberg数据组织方式,实现了离线和近实时处理系统的数据输出格式的管理的统一。


KAPPA架构可以通过实时处理流程,数据更新到Hudi data format。时间处理颗粒度较小产生的碎片化文件,DeltaLake/Hudi/Iceberg都提供了丰富的能力来实现异步的compaction,使得数据在更长时间跨度下,仍然支持查询引擎(OLAP)的高效访问。另外,这些新的数据格式,都是以列式数据存储Parquet作为基础格式,并支持到Spark/Flink/Presto等数据处理平台的集成。Lakehouse是同时具备DataLake的低廉存储介质和Data WarehouseACID/Data Version/Cache/Index等功能的一种全新的数据管理方案。由于开源系统,都是以library提供,在生产环境里更容易得到普及。


总结:流批融合是趋势,但不是目的。近些年技术演进的思路,也在证明,实时数据处理和离线数据处理,用同样的处理框架和统一的数据存储方案,可以大幅度地降低开发和维护成本,提升服务能力。但是,这些新兴技术也需要逐渐得到技术市场的认可和消化,对于,大数据从业人员,我们只需要保持积极开发的态度准备好下一轮技术升级的到来。



欢迎大家转发点赞!


文章转载自译数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论