48、流处理核心技术与容错机制解析

流处理核心技术与容错机制解析

1. 时间依赖问题

在流处理中,时间依赖是一个常见且关键的问题。例如,当状态随时间变化,进行连接操作时,需要确定使用哪个时间点的状态进行连接。以销售场景为例,在开具发票时需要应用正确的税率,而税率会根据国家、州、产品类型和销售日期而变化。当将销售数据与税率表进行连接时,通常希望使用销售时的税率,如果是重新处理历史数据,该税率可能与当前税率不同。

如果跨流的事件顺序不确定,连接操作将变得非确定性,即无法保证在相同输入下重新运行作业能得到相同结果,因为再次运行时输入流中的事件可能以不同方式交错。在数据仓库中,这种问题被称为缓慢变化维度(SCD),通常通过为连接记录的特定版本使用唯一标识符来解决。例如,每次税率变化时分配一个新的标识符,发票中包含销售时的税率标识符。这样做虽然使连接操作具有确定性,但所有版本的记录都需要保留,导致无法进行日志压缩。

2. 流处理中的容错挑战

在批处理中,容错相对容易实现。例如,在 MapReduce 作业中,如果某个任务失败,可以在另一台机器上重新启动该任务,并丢弃失败任务的输出。这是因为输入文件是不可变的,每个任务将输出写入 HDFS 上的单独文件,并且只有在任务成功完成后输出才可见。这种批处理的容错方法确保即使某些任务失败,批处理作业的输出也与没有出错时相同,每个输入记录似乎只被处理一次,这被称为精确一次语义,更确切地说是有效一次语义。

然而,流处理中的容错问题更为复杂。由于流是无限的,无法等待任务完成后再使输出可见,因此不能简单地采用批处理的容错方法。

2.1 微批处理和检查点机制

  • 微批处理
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值