大数据理论与实践11 实时流处理引擎Slipstream

背景介绍

批处理与流处理:
批处理是进行批量处理
在这里插入图片描述
从图上可以看出,它具有调度延时和处理延时。
流处理是进行流式处理
在这里插入图片描述
它更能满足低延时的需求。
在这里插入图片描述

场景的批处理框架有MapReduce、Spark Core、Inceptor(Nucleon)、Flink Dataset 等。
流式计算框架包括:基于事件驱动(Event-driven)的Storm Core(攒一小批处理)、Flink DataStream、Slipstream,基于微型批处理(Micro-batch)的:Storm Trident、Spark Streaming(微批处理的代表,延时高,500ms~1s)、Slipstream。

Slipstream简介

Slipstream是一个融合事件驱动与微批处理的实时流计算引擎和分布式流式SQL引擎。

Slipstream基本概念

Stream(数据流):从Kafka等地方获取到的数据。
StreamJob(流任务):对一个或多个Stream进行计算,并将结果写入一张表的任务。需要有落盘的过程。
Application(流应用):一组业务逻辑相关的StreamJob的集合。

Stream(数据流)

分为Input Stream(输入流)Derived Stream(衍生流)

首先,Input Stream(输入流)是直接接收数据源传来的数据而形成的Stream。
在微批(Micro-batch)模式下,将Input Stream按时间划分成若干小数据块(Batch)来处理,即在由若干单位时间组成的时间间隔内,将接收的数据放到一个Batch中(Batch的时间长度称为Batch Duration)。
在事件驱动(Event-driven)模式下,以单条数据被Input Stream接收为事件,逐条读取并处理。
Derived Stream(衍生流)是由StreamSQL语句对已有的Stream变形(Transform)得来的。Stream变形通常由CSAS(Create Stream As Select)语句完成。
微批模式下
,是通过已有Batch计算得到新Batch的过程:

  • 针对单个batch的变形(单Batch变形),是通过对Stream中单个Batch进行计算得到新Batch的过程,如下图所示:
    在这里插入图片描述
  • 窗口变形(多Batch变形):对一个时间窗口(Window)内的多个Batch进行计算得到新Batch的过程。
    在这里插入图片描述
    例如:针对双11的销售场景,商户想获取店铺产品的点击数据,商户向平台提出数据请求,平台每一分钟,告诉商户之前三分钟的点击和销售数据,这就是一个典型的窗口计算。实际使用场景是非常多的。
    在衍生流的事件驱动模式下
    每得到一条数据就对其进行变形,得到Derived Stream,也可以分为单数据变形和窗口变形(多数据变形):
  • 单数据变形:对Stream中单条数据进行计算得到新数据的过程
    在这里插入图片描述
  • 窗口变形(多数据变形):对一个时间窗口(Window)内的多条数据进行计算得到新数据的过程
    在这里插入图片描述

StreamJob(流任务)

StreamSQL中的Stream是静态的,它仅仅描述了如何对数据源传来的数据进行接收和变形的计划,但并不执行这些计划。要让StreamSQL执行计划,需要有相应的Action操作来触发StreamJob。将一个stream真正变成了一个流水线。
在这里插入图片描述

如上图,一个StreamJob启动时,StreamSQL会为每一个Input Stream启动一组称为Receiver的任务来接收数据,接收来的数据经过一系列Derived Stream的变形最终被插入一张表,供用户查询。

Application(流应用)

Application是一组业务逻辑相关的StreamJob集合。
合理使用Application划分StreamJob可以实现资源的共享和隔离:

  • 资源共享:Application内使用同一个Input Stream的StreamJob共享一组Receiver
  • 资源隔离:不同Application中的StreamJob若使用同一个Input Stream,则每个Application都为这个InputStream启动一组Receiver
    在这里插入图片描述
    可以联想到kafka的Consumer Group,Group中共享这个数据。

StreamSQL vs. 普通SQL

  • DML语句的运行机制不同:
    普通SQL:阻塞式运行,提交SQL后,用户需等待SQL执行结束,期间命令被持续阻塞,无法执行其他命令。
    StreamSQL:背景运行,计算任务持续在后台运行,执行StreamSQL的DML语句会立即返回结果。
  • 查询结果的输出不同:
    普通SQL:查询结果或者显示在Console,或者通过JDBC读取
    StreamSQL:用户必须显式地指定查询结果输出到某个地方,StreamSQL:用户必须显式地指定查询结果输出到某个地方,查询结果通常会插入到表中,例如:Insert Into result_table Select …

复习

事件驱动模式与微批模式有什么不同?
两种处理模式下的窗口变形有什么不同?
简述一下SteamJob的主要作用。
StreamSQL与普通SQL有什么区别?

参考

课程内容来自:南京大学+星环科技课程,大数据大数据理论与实践课程

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值