博客园  :: 首页  :: 联系 :: 管理

五:大数据架构回顾-LambdaPlus架构

Posted on 2020-11-08 16:02  天戈朱  阅读(573)  评论(0编辑  收藏  举报

   Blink阿里云 Apache Flink 基础上深度改进的实时计算平台,Blink旨在将流处理和批处理统一,实现了全新的 Flink SQL 技术栈,在功能上,Blink支持现在标准 SQL 几乎所有的语法和语义,在性能上,Blink也比社区Flink更加强大。自 2019 年 1 月起,阿里巴巴逐步将内部维护的 Blink 回馈给 Flink 开源社区,Flink 1.9.0 是阿里内部版本 Blink 合并入 Flink 后的首次发版,Flink 1.10 版本可以看作一个比较重要的里程碑式版本,至此,Blink 全部功能都已经进入 Flink,包括 Blink 中比较关键的设计和通用的优化。

   为了实现流批处理一体化,Blink采用的将流处理视为批处理的一种特殊形式。因此在内部维持了若干张张流表。通过缓存时间进行约束,限定在一个时间段内的数据组成的表,从而将实时流转为微批处理。理论上只要把时间窗口开的足够大,Flink的流表可以存下上百日的数据,从而保证微批处理的“微”足够大可以替换掉离线处理数据。但这样做存在几个问题:

  • Flink的流表是放在内存中,不做持久化处理的。一旦任务发生异常,内存数据丢失,Flink是需要回溯上游消息流,从而转为Kappa的结构。
  • 数据窗口开的越大,内存成本越高。受限于成本,对大量数据处理仍然有可支持的物理空间上限。
  • 下游接收的通常都是处理结果,对于内存中的流表数据是无法直接访问的。这样无形中增加了开发成本。

Lambda plus 是基于 Tablestore 和 Blink 打造的云上存在可以复用、简化的大数据架构

  •   表格存储(Tablestore):是阿里云自研的 NoSQL 多模型数据库,提供PB级结构化数据存储、千万TPS以及毫秒级延迟的服务能力,表格存储提供了通道服务(TunnelService)支持用户以按序、流式地方式消费写入表格存储的存量数据和实时数据,同时表格存储还提供了多元索引功能,支持用户对结果视图进行实时查询和分析。 

 

Lambda plus大数据架构


 

Lambda batch层:

  • Tablestore 直接作为 master dataset,支持用户直读,配合 Tablestore 多元索引,用户的线上服务直读、ad-hoc 查询 master dataset 并将结果返回给用户;
  • blink 批处理任务向 Tablestore 下推SQL的查询条件,直读 Tablestore master dataset,计算 batch view,并将 batch view 重新写回 Tablestore;

Streaming层:

  • blink 流处理任务通过表格存储 TunnelService API 直读 master dataset 中的实时数据,持续产生 stream view
  • Kappa 架构的 backfill 任务,可以通过建立全量类型数据通道,流式消费 master dataset 的存量数据,从新计算;

Serving层:

  • 为存储 batch view 和 stream view 的 Tablestore 结果表建立全局二级索引和多元索引,业务可以低延迟、ad-hoc方式查询;

 

Lambda plus的数据链路


 

 

问题:Query 时 Batch view 与 Real-time View 的溶合问题?

 

原Lambda架构在数据写入、存储、对接计算组件以及展示层面临的挑战

  • 写入层上,Lambda 没有对数据写入进行抽象,而是将双写流批系统的一致性问题反推给了写入数据的上层应用;
  • 存储上,以HDFS为代表的 master dataset 不支持数据更新,持续更新的数据源只能以定期拷贝全量snapshot到HDFS的方式保持数据更新,数据延迟和成本比较大;
  • 计算逻辑需要分别在流批框架中实现和运行,而在类似Storm的流计算框架和Hadoop MR的批处理框架做job开发、调试、问题调查都是比较复杂的;
  • 结果视图需要支持低延迟的查询分析,通常还需要将数据派生到列存分析系统,并保证成本可控;

针对上述原Lambda架构上述的技术问题,Lambda plus的解决思路:

  • 针对数据写入的问题,Lambda plus 数据只需要写入表格存储,Blink 流计算框架通过通道服务API直读表格存储的实时数据,不需要用户双写队列或者自己实现数据同步;
  • 存储上,Lambda plus 直接使用表格存储作为 master dataset,表格存储支持用户tp系统低延迟读写更新,同时也提供了索引功能 ad-hoc 查询分析,数据利用率高,容量型表格存储实例也可以保证数据存储成本可控;
  • 计算上,Lambda plus 利用 blink 流批一体计算引擎,统一流批代码
  • 展示层,表格存储提供了多元索引和全局二级索引功能,用户可以根据解决视图的查询需求和存储体量,合理选择索引方式;

总结,表格存储实现了batch view、master dataset 直接查询、stream view 的功能全集,Blink实现流批统一,Tablestore 加 blink 的 Lambda plus 模式可以明显简化 Lambda 架构的组件数量,降低搭建和运维难度,拓展用户数据价值。

 

Lambda plus的适用场景


 基于 Tablestore 和 Blink 的 Lambda plus 架构,适用于基于分布式NoSQL数据库存储数据的大数据分析场景,如IOT、时序数据、爬虫数据、用户行为日志数据存储等,数据量以TB级为主。典型的业务场景如:大数据舆情分析系统

示例图解二:

  •  

     

     

参考资料