作者:宝宝抱抱你啊 | 来源:互联网 | 2023-08-22 02:00
为了控制一个TaskManager能接收多少task,TaskManager通过taskslot来进行控制每个taskslot表示TaskManager拥有资源的一个固定大小的
一:flink初识 Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。 Flink主页在其顶部展示了该项目的理念:“
Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源流处理框架”
Flink将批处理(即处理有限的静态数据)视作一种特殊的流处理。
DataStream API 流式处理的接口,DataSet API 面相批处理的接口
FlinkML:机器学习 CEP:复杂事件处理 Gelly图计算 针对流式和批处理的Table API
二:flink基本架构 2.1:JobManager 与TaskManager
Flink运行时包含了两种类型的处理器:JobManager处理器,TaskManager处理器
2.2 无界数据流与有界数据流
无界数据流:以特定的顺序获取event,立即处理
有界数据流:处理有界流不需要有序获取,因为可以始终对有界数据集进行排序,有界的处理也称为批处理
三:flink集群搭建
四:flink运行架构 4.1任务提交流程
4.2 任务调度原理
4.3 TaskManager与slots
每一个TaskManager是一个JVM进程,它可能会在独立的线程上执行一个进程或多个subtask。为了控制一个TaskManager能接收多少task,TaskManager通过task slot来进行控制(一个TaskManager至少有一个task slot)
每个task slot 表示TaskManager拥有资源的一个固定大小的子集。假如一个TaskManager有三个slot,那么他将其内存内存分成三份给各个slot。需要注意的是,这里不涉及到CPU的隔离。
Task Slot是静态的概念,是指TaskManager具有的并发执行的能力,可以通过taskmanager.numberOfTaskSlots进行配置,而并行度parallelism是动态概念,即TaskManager运行程序时实际使用的并发能力,可以通过paramllelism.default设置。
例:假设一共有3个TaskManager,每个TaskManager中分配3个TaskSlot,也就是每个TaskManager可以接收3 个Task,一共9个TaskSlot,如果我们设置parallelism.default=1,即运行程序的并行度为1,9个TaskSlot只用了1个,有8个空闲,因此要设置合适的并行度才可以提高效率。
五:flink DataStream API 六:Time与Window 七:EventTime与Window