首页 > 其他分享 >Flink引擎介绍

Flink引擎介绍

时间:2023-10-14 21:03:10浏览次数:32  
标签:Task Flink 调度 介绍 TaskManager 引擎 执行 数据

Flink概述——什么是Flink

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。 Apache Flink 功能强大,支持开发和运行多种不同种类的应用程序。它的主要特性包括:批流一体化、精密的状态管理、事件时间支持以及精确一次的状态一致性保障等。Flink 不仅可以运行在包括 YARN、 Mesos、Kubernetes 在内的多种资源管理框架上,还支持在裸机集群上独立部署。在启用高可用选项的情况下,它不存在单点失效问题。事实证明,Flink 已经可以扩展到数千核心,其状态可以达到 TB 级别,且仍能保持高吞吐、低延迟的特性。世界各地有很多要求严苛的流处理应用都运行在 Flink 之上。

批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。 流处理的特点是无界、实时, 无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。

在Flink中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流。

无界流:有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。 有界流:有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。

Flink整体架构

SDK层 :Flink的SDK目前主要有三类,SQL/Table、DataStream、Python;

执行引擎层(Runtime层) :将流水线上的作业(不论是哪种语言API传过来的数据,不论是流还是批)都转化为DAG图,调度层再把DAG转化为分布式环境下的Task,Task之间通过Shuffle传输数据。

状态存储层:负责存储算子的状态信息

资源调度层:目前Flink可以支持部署在多种环境

一个Flink集群,主要包含以下两个核心组件:作业管理器(JobManger)和 任务管理器(TaskManager) 。

JobManager(JM) :由ResourceManager、jobMaster、Dispatcher组成,负责整个任务的协调工作包括:调度task、触发协调Task做Checkpoint、协调容错恢复等;

TaskManager(TM) :负责执行一个DataFlow Graph的各个task以及data streams的buffer和数据交换。

作业管理器(JobManger) JobManager 是一个 Flink 集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被唯一的 JobManager 所控制执行。JobManger 又包含 3 个不同的组件:分发器(Dispatcher)、JobMaster、资源管理器(ResourceManager) 。

分发器(Dispatcher):接收作业,拉起JobManager来执行作业,并在JobMaster挂掉之后恢复作业; JobMaster:管理一个job的整个生命周期,会向ResourceManager申请slot ,并将task调度到对应TM上; 资源管理器(ResourceManager) :负责slot资源的管理和调度,Task manager拉起之后会向RM注册。

任务管理器(TaskManager):TaskManager 是 Flink 中的工作进程,数据流的具体计算就是它来做的,所以也被称为“Worker”。Flink 集群中必须至少有一个TaskManager;当然由于分布式计算的考虑,通常会有多个 TaskManager 运行,每一个 TaskManager 都包含了一定数量的任务槽(task slots)。Slot是资源调度的最小单位,slot 的数量限制了 TaskManager 能够并行处理的任务数量。启动之后,TaskManager 会向资源管理器注册它的 slots;收到资源管理器的指令后,TaskManager 就会将一个或者多个槽位提供给 JobMaster 调用,JobMaster 就可以分配任务来执行了。在执行过程中,TaskManager 可以缓冲数据,还可以跟其他运行同一应用的 TaskManager交换数据。

Flink示例

流式的WordCount示例,从kafka中读取一个实时数据流,每10S统计一次单词出现次数,DataStream实现代码如下

DataStream<String> Lines=env.addSource(new FlinkKafkaConsumer<>(...));
DataStream<String> events=lines.map((line)->parse(line));
DataStream<Statistics>stats=events
        .keyBy(event->event.id)
        .timeWindow(Time.seconds(10))
        .apply(new MyWindowAggregationFunction());
stats.addSink(new BucketingSink(path));

业务逻辑转换为一个Streaming DataFlow Graph

假设示例的sink算子的并发配置为1 , 其余算子并发为2 紧接着会将上面的Streaming DataFlow Graph转化Parallel Dataflow (内部叫Execution Graph) :

为了更高效地分布式执行,Flink会尽可能地将不同的operator链接( chain )在一起形成Task。 这样每个Task可以在一个线程中执行,内部叫做OperatorChain,如下图的source和map算子可以Chain在一起。

最后将上面的Task调度到具体的TaskManager中的slot 中执行,一个Slot只能运行同一个task的subTask

标签:Task,Flink,调度,介绍,TaskManager,引擎,执行,数据
From: https://blog.51cto.com/u_12482515/7863179

相关文章

  • 02 K8S API资源对象介绍01(Pod)
    一、认识YAML1.1什么是YAML官网:https://yaml.org/YAML是一种用来写配置文件的语言。JSON是YAML的子集,YAML支持整数、浮点数、布尔、字符串、数组和对象等数据类型。任何合法的JSON文档也是YANL文档,YAML语法规则:使用缩进表示层级关系,缩进不允许使用tab,只能使用空格,同一层级......
  • 文本识别 (OCR)引擎之Tesseract的使用
    Tesseract概述Tesseract是一个开源文本识别(OCR)引擎,是目前公认最优秀、最精确的开源OCR系统,用于识别图片中的文字并将其转换为可编辑的文本。Tesseract能够将印刷体文字图像转换成可编辑文本,它支持多种语言,并且在许多平台上都可使用,包括Windows、MacOS和Linux。Tesseract......
  • Spring源码解析——@Transactional注解的声明式事物介绍
    正文面的几个章节已经分析了spring基于@AspectJ的源码,那么接下来我们分析一下Aop的另一个重要功能,事物管理。最全面的Java面试网站事务的介绍1.数据库事物特性原子性多个数据库操作是不可分割的,只有所有的操作都执行成功,事物才能被提交;只要有一个操作执行失败,那么所有的操作......
  • Linux 之八 完整嵌入式 Linux 环境介绍及搭建过程详解
    Linux之八完整嵌入式Linux环境介绍及搭建过程详解 本文主要是介绍Linux之八完整嵌入式Linux环境介绍及搭建过程详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!  最近,有个需求需要验证一下嵌入式LINUX系统在STM32上使用效果,正好手......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(8) -- 使用Co
    在我们WPF应用端的时候,和WInform开发或者Vue前端开发一样,有时候也需要对内容进行转义处理,如把一些0,1数值转换为具体含义的文本信息,或者把一些布尔变量转换为是否等,都是常见的转换处理,本篇随笔介绍在WPF应用端对内容使用Converter类实现内容的转义处理的操作。1、使用Converter实......
  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(7) -- 图标列
    我们在WPF应用端的界面中,使用lepoco/wpfui来做主要的入口框架,这个项目它的菜单内置了不少图标,我们需要在动态菜单的配置中,使用它作为图标的展示处理,本篇随笔介绍如何基于图标枚举集合进行图标的展示和选择处理。并扩展到Font-Awesome-WPF的处理进行展示和选择。1、lepoco/wpfui......
  • openbmc 目录介绍
    编译目录介绍conf——配置文件夹,包含了bblayers.config、local.conf、sanity_info、templateconf.cfg文件cache——记录编译进度缓存--sanity_info记录了编译包的路径sstate-cache——存放编译缓存文件tmp——存放编译中的缓存、解压的源码文件、生成软件安装包、编译日志......
  • Openstack架构介绍
    一、Openstack介绍OpenStack是一系列开源工具(或开源项目)的组合,主要使用池化虚拟资源来构建和管理私有云及公共云。其中的六个项目主要负责处理核心云计算服务,包括计算、网络、存储、身份和镜像服务。还有另外十多个可选项目,用户可把它们捆绑打包,用来创建独特、可部署的云架构。二......
  • Python中的h5py介绍
    Python中的h5py介绍HDF5(HierarchicalDataFormat5)是一种用于存储和组织大量科学数据的文件格式。h5py是Python中的一个库,提供了对HDF5文件的高级封装,使得在Python中处理HDF5文件变得更加简单和高效。本文将介绍h5py的基本概念和使用方法。什么是HDF5文件?HDF5文件是一种用于存储和......
  • 可观测性数据收集集大成者 Vector 介绍
    如果企业提供IT在线服务,那么可观测性能力是必不可少的。“可观测性”这个词近来也越发火爆,不懂“可观测性”都不好意思出门了。但是可观测性能力的构建却着实不易,每个企业都会用到一堆技术栈来组装建设。比如数据收集,可能来自某个exporter,可能来自telegraf,可能来自OTEL,可......