flink学习笔记

基础知识

  • 物理执行图(在各个TaskManager上部署Task后生成的图,并不是一个数据结构)
  • 并行度相同的one-to-one任务可以合并成一个大任务(减少数据传输)
  • disablechaining():强制不合并,前后都断开(针对任务资源消耗大的)
  • startnewChain():从当前任务断开不合并
  • slotshareingGroup():同一个共享组任务可以共享slot,不同的共享组不能共享slot
    • 默认共享组是default
  • eventtime:时间创建时间
  • ingestion time:数据进入时间
  • process time:处理时间
  • watermark:系统允许的最大延迟时间 (延时触发,在curtime触发curtime-T时间的窗口)
  • watermark传递:广播(给下游所有slot传递当前值)(不同上游分区不同值,以最小的值作为自己的时钟值)

flink 状态:

  • 算子状态,限定为算子任务
    • 列表状态(所有状态保存为一维数组)
    • 联合列表状态(数据的列表,方便故障恢复)
    • 广播状态(多项任务任务状态相同)
  • 键控状态,根据输入流中定义的键来维护和访问 值状态 列表状态 key-value 映射状态 聚合状态
  • 后端状态,
    • memoryStateBackend 存储内存上
    • FsStateBackend 本地存内存 备份在远程文件系统上,更好的容错性
    • RocksDBStateBackend 所有状态系列化 存在本地DB中 无内存限制

flink容错机制

  • 一致性检查点(checkpoint)
    • 自动存盘 当某个时间点所有任务处理完相同的一个输入数据
    • 使用新加barrier方法 广播给所有节点,确认节点 barrier之前的数据全部处理完成,当前节点才会继续处理之后数据
    • 所有流程处理完成之后 jobManger存储完整流程的快照
  • savepoint 手动存盘 原理和checkpoint一致 最好指定uid

状态一致性

  • 最多一次
  • 至少一次
  • 精确一次

end to end一致性:

  • 内部保证:checkpoint
  • source ;可重复数据的读取位置
  • sink:保证数据不会重复写入 幂等写入 事务写入
    • 幂等写入:指数求导等于原值 类似与hash 存储,每个操作为key
    • 事务写入:原子性 不同的checkpoint 设计为一个事务
    • 预写日志:先做缓存到checkpoint 等到之后一次写入 (实时性不够) Datastream API 提供模板类:GenericWriteAheadSink
    • 两阶段提交:每个checkpoint启动一个事务,当收到checkpoint完成时,正式提交,实现结果的真正写入,提供TwoPhaseCommitSinkFunction接口(外部系统必须提供事务支持)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值