Flink基础教程
2019-07-25 10:15:57 15 举报
AI智能生成
登录查看完整内容
flink基础教程
作者其他创作
大纲/内容
Flink基础教程
流数据
流数据更能真实反映生活方式
数据一致性
事件发生顺序
应用领域
零售业
物联网
交通运输业
智能汽车
电信业
银行、金融业
连续时间处理的目标
技术演变
Storm
Lambda架构
Spark
Flink
批处理和流处理
流处理架构
传统架构遇到的问题
计算复杂度提升,不堪重负
维持一致的全局状态
分层
消息传输层
流处理层
理想的消息传输层
高性能和持久性
生产者和消费者解耦
支持微服务架构
应用例子
作为中心数据源
欺诈检测
不限于实时应用
流的跨地域复制
Flink的优势
窗口与时间
批处理——计算窗口——处理时间
流处理——会话窗口——事件时间
故障恢复:检查点技术
准确恢复
低开销
数据重算
结果的及时性
开发运维轻松
友好的用户交互接口
跟踪计算状态
流处理批处理采用同一技术实现
时间的处理
Lambad架构的问题
对时间的处理方法不明确
组件太多
HDFS-Flum-MR-Hbase
MR定时任务+Storm实时任务
预警不及时
MR批处理任务,提供准确计数
Storm实时任务,提供近似计数,预警
乱序事件流
批处理界限不明确
数据源-Kafka-Flink-存储
微批处理
作用:提高系统性能,增加系统吞吐量
Storm Trident
Spark Streaming
时间概念
事件时间
摄取时间
处理时间
窗口
时间窗口
stream.timeWindow(Time.minutes(1))
计数窗口
stream.countWindow(4)
超时设置
会话窗口
stream.window(SessionWindows.withGap(Time.minutes(5)))
触发器
每个窗口都有默认的触发器
自定义触发器
窗口的实现
所有窗口都是同一个机制实现
开窗机制和检查点机制完全分离
自定义更复杂的窗口
时空穿梭
数据的重新处理能力
水印
Flink通过水印推进事件时间
水印的设置
完美的水印
启发式水印
Kappa架构
数据源-Kafka-Flink-Kafka-Elasticsearch-Kibana
异常检测机制:原始数据-统计信息提取器-统计信息-贝叶斯异常检测-新奇点
有状态的计算
区别
无状态:分别根据最新输入生成输出记录
有状态:维护状态,基于最新输入和当前状态输出记录
一致性
含义:从故障中恢复之后得到的结果和与没有任何故障的时候相比,前者有多正确
三种级别
at-most-once 至多一次,少算
at-least-once 至少一次,多算
exactly-once 恰好一次,正确
检查点
核心作用:确保状态正确,保证exactly-once
检查点由算子处理,但不参与计算,会出发相关行为
开销极小
如果检查点失败,Flink会丢弃该检查点并继续执行
保存点
与检查点工作方式完全相同,由用户触发
用途
应该程序代码升级
Flink版本更新
维护和迁移
假设模拟和恢复
A/B测试
端到端的一致性
将状态输出到存储系统如何保持exactly-once
方法一:已提交读
方法二:未提交读
Flink支持多重语义的算子
作为数据库的流处理器
Flink正开发可直接查询状态的API
Flink的性能测试
状态
改进数据生成器
消除网络瓶颈
使用MapR Streams
增加key基数
批处理
两种流数据
无限流处理
有限流处理
批处理技术
DataStream API
DataSet API
通过同一个底层引擎支持流处理和批处理
Flink的批处理性能测试
TeraSort
分布式散列连接
Flink基于流处理,更少的磁盘操作,所以更快
0 条评论
回复 删除
下一页