Flink 简介
Flink:
大数据流式处理框架:Flink 和 spark streaming
Flink 延迟更小,实时性更好
低延迟、高吞吐,准确性高
API:
source
transform
sink
一、Flink简介:
Flink(德语:快速、灵巧)
Flink 是一个框架,分布式处理引擎,对有界和无界数据流进行状态计算
2015年至今,快速增长,在国内大公司应用广泛
二、为什么用Flink:
1) 流数据,更真实的反映我们的生活
2)传统的数据架构是是基于有限的数据集
3)目标:低延迟、高吞吐、结果的准确性和良好的容错性
场景:电商、物联网(传感器)、广告投放、实时报警、实时异常监测、实时结算和推送
Flink 可以做到,毫秒级别的延迟
银行家时间(下午三点下班),随着技术的发展,比如转账之前需要24小时,现在可以实时到账。
三、传统数据处理架构
事物处理(实时)
分析处理(离线)
有状态的流式处理
1)第一代,分布式流式框架
000000000------>应用逻辑------>***********
|
local state
|
remote storage (checkpoint)
高并发、高吞吐,分布式计算下,一致性不好
2)流处理第二代架构(lambda 架构,两套系统,同时保证低延迟和结果的准确性)
批处理 :批处理,一致性没问题,实时性差一些
流处理:实时性好,但是一致性差
3)第三代架构(Flink)
Storm:低延迟
Spark streaming (微批处理的架构):高吞吐、高压力下正确性好,但延迟稍高
Flink: 结合上面的架构的所有的优点
struct streaming...
四、Flink的主要特点:
1)事件驱动,来一个处理一个(数据管道,Kafka)
事件----> Event log(kafka) ----->Application state ----> Event log(kafka) -----> other appliation
(持久化存储)
2)基于流的世界观:流
离线数据:有界流
实时数据:无界流
相对的,spark 中一切都是批
3)分层API
越顶层越抽象,使用方便、含义简明
越底层越具体,使用灵活、能力丰富
最上层:SQL、TABLE API
中间层:DataStream API
最底层:ProcessFunction
其他特点
支持事件时间和处理时间,不同的时间语义
精确一次的状态一致性(exactly-once)
低延迟,每秒数百万事件,毫秒延迟
和众多存储系统链接,HDFS等
高可用,动态扩展,实现7*24H全天运行
对比sparkstreaming 和 FLINK:
1)流和微批的区别
2)sparkstreaming,秒级延迟,需要等批处理
3)数据模型:
spark 采用RDD模型,spark streaming 的Dstream实际就是一组组小批数据的RDD集合
flink基本的数据模型是数据流,以及事件序列
4)运行架构:
spark是批计算,将DAG划分为不同的stage,一个完成后才可以进行下一个
flink是标准的流执行模式,一个节点处理完,马上发向下一个节点进行处理即可