Flink简介
Flink是一个框架和分布式处理引擎,新一代的流式计算处理框架,与Spark相比,flink低延迟,高吞吐,实时性更好,每秒处理百万个,spark本质是一批批微小数据集处理,而Flink才是真正的流处理。
2014年捐赠apache基金会 2015成为apache顶级项目
Flink和Spark Streaming比较
流和微批
Flink 以事件为驱动,真正的流处理
streaming可以理解成一批批微批出
数据模型
spark采用RDD模型,streaming的Dstream实际也是一组组小批数据RDD的集合
flink基本数据模型是数据流,以及事件序列
运行时架构
spark是批计算,将DAG划分不同stage,一个完成才可以计算下一个
flink是标准的流执行模式,一个事件在一个节点处理后可以发往下一个节点进行处理
WordCount示例代码:
1、批处理
2、流处理
Flink运行组件
JobManager-作业管理器
1、控制一个应用程序的主进程
TaskManager-任务管理器
1、每个TaskManager都包含了一定数量的插槽(slots,隔离内存),插槽的数量限制了TaskManager能够执行的任务数
2、TaskManager向资源管理器注册它的插槽,收到资源管理器指令后,就会将一个或多个插槽提供给JobManager调用,JobManager就可以向插槽分配task来执行了
3、执行过程中,TaskManager可以跟其他运行同一程序的TaskManager交换数据
Dispatcher-分发器
提供了REST接口
ResourceManager-资源管理器
基本原理
Flink流处理API
Environment
createLocalEnvironment、createRemoteEnvironment、getExecuteEnvironment
Source
文件、自定义
Transform
flatmap、map、filter、keyby、滚动聚合算子、Reduce、split和select、Connect和CoMap、Union
split和select:一条流分为两条流 Connect和CoMap :两条流合并成一条流