Flink简介:
Apache flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。
Flink特点:
一、批流统一:
Flink支持流式处理数据,也支持批式处理数据。
二、性能卓越:
高吞吐、低延迟
三、规模计算:
支持水平拓展架构
支持超大状态与增量检查点机制
例如:每天处理数万亿的事件。应用维护几TB大小的状态。应用在数千个CPU核心上运行。
四、生态兼容:
支持与Yarn集群集成。
支持与Kubernetes集成。
支持Standalone模式运行。
五、高容错:
故障自动重试。
一致性检查点。
保证故障场景下精确的一次的状态一致性。
Flink数据处理示意图:
事件驱动型:上游提供一批数据,处理一批数据。
流水线:上游数据像奔流的江水一样滔滔不绝,flink实时响应处理。
相关概念或术语:
有界流和无界流:
无界数据流:
特点:
有定义流的开始,但没有定义流的结束;(自然河流)
无休止产生数据。(用户日志数据)
数据必须持续处理,不能等数据都到达再处理。
有界数据流:
有定义流的开始,也有定义流的结束;(水坝开闸放水)。
有界流可以在所有数据抵达后再进行计算。
有界流数据可以被按照时间排序。所以不需要有序摄取。
相比较SparkStreaming的优势:
根本区别:SparkStreaming的核心是批处理。Flink的核心是流处理。
Spark采用的是RDD模型,而Spark Streaming的DStream实际上也就是一组组小批数据RDD的集合。
Spark运行时是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个。
Flink基础数据模型是数据流,以及时间Event序列。
Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。
Flink的应用场景:
1)电商和市场营销:实时数据报表,实时推荐,广告投放。
2)物联网:传感器实时数据采集和显示
3)物流配送和服务业:订单状态实时更新、通知信息推送
4)银行和金融业:实时结算和消息推送。实时交易异常行为检测