Chapter9 批流融合基础¶
1.简述Lambda架构的优缺点
优点:
- 批处理视图是预先运算好的,因此可以通过建立索引支持随机读取,加快响应速度
- 使用增量算法针对批处理视图的陈旧结果进行补偿,降低查询延迟
- Lambda架构中的各层可以由不同的系统搭建,如使用MapReduce做批处理、Storm作为加速层、分布式数据库Cassandra作为服务层
缺点:
- 使用Lambda架构的开发人员,需要将所有的算法在批处理层和加速层实现两次,即批处理系统和流计算系统分开编程,还要求查询得到的是两个系统结果的合并,增大了开发的难度
- 使用Lambda架构的运维人员需要同时维护批处理和流计算两套执行引擎,增加了运维的复杂度(现由一体化执行引擎解决)
2.批处理系统能否处理无界数据集?流计算系统能否处理有界数据集?为什么?
可以
- 无界数据集可以用批处理系统反复调度来处理
- 把有界数据集视作有界流(或是无界流的一段),良好设计的流计算系统可以处理有界数据集。
3.请阐述事件时间和处理时间各自的含义。
事件时间(Event Time):产生该记录的事件实际发生的事件,即记录产生时,其所在系统的当前时间
处理时间(Processing Time):一条记录被数据处理系统观察到的事件
事件时间是永远不变的,但处理时间随着该记录在系统中各个物理节点的流动而持续变化(处理时间随着该记录在系统中被各个节点处理时而持续变化)
4.对于按水位线机制设置的触发器,若水位线设置过慢,则会带来高处理延迟,请问有什么方法来降低处理延迟?
设置触发器“提前”触发结果的输出。触发器除了在水位线越过窗口指定事件时间戳后触发结果输出以外,在处理时间域上每隔t分钟输出一次结果。
5.在Dataflow模型的结果修正方式中,与抛弃方式相比,累积方式存在什么额外的代价?
抛弃方式直接抛弃窗口内容,而累积方式需要把窗口内容持久化,从而用新得到的结果修正已输出结果。
6.水位线的含义是什么?水位线机制用于解决什么问题?
-
水位线是一个事件时间戳,水位线所指示的事件时间表示早于该事件时间的记录已经被完全观察到,因此系统可以根据水位线“认定”当前事件事件域的所处时间。(需要注意,水位线是系统根据用户预定义或用户指定的启发式规则产生的,所以水位线的“认定”只是一种猜测。)
-
水位线机制可以告诉系统一个数据延迟了多少,用于衡量处理时间和事件时间之间的差异,用于防止数据乱序/指定时间内无法获取全部数据
7.既然Dataflow编程模型已经实现了批流统一编程,为什么还需要进一步关系化?
Dataflow编程模型认为输入数据是一系列元组组成的序列,从关系数据模型的角度来看,如果将键值对看作元组,那么这一系列的键值对可以构成关系表,此时需要提供的操作不再是键值对转换,而是需要提供针对关系表的SQL
8.请比较连续处理模式与微批处理模式对于记录处理延迟的影响?
微批处理模式:将无界数据集划分为小批量数据,不断地启动短作业来处理这些小批量数据,先启动的作业必须执行完,才启动新作业,通常会带来秒级延迟。
连续处理模式:启动一个长期运行的作业,记录一旦进入系统将立即得到处理,而不是像微批处理方式中那样等到一批数据完全获取并且前一批短作业结束后才会处理。
9.为什么微批处理模式不易于实现基于记录计数的窗口?
以求k个item的平均数为例,求平均数需要将当前数据集视为一个整体,而微批处理无法保证当前处理的微批内包含求平均数所需要的所有数据。