快速了解Flink——数据架构、执行流程等

本文介绍了Apache Flink的核心概念,包括其作为有状态计算引擎的定位,以及基本架构,涉及JobManager和TaskManager的角色。Flink的编程模型包括DataStream、DataSet、Table和SQL API,并探讨了数据流处理的四个层次。文章详细阐述了Flink的执行流程,从源数据开始,经过转换,到最终的接收器。整个过程涉及Source、Transformation和Sink的构建,以及JobGraph和ExecutionGraph的转换。
摘要由CSDN通过智能技术生成

一、什么是Flink

Apache Flink官网的描述:

Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale.

翻译成中文就是说:Apache Flink是一个对有界或无界数据流进行有状态计算分布式处理引擎框架    

二、Flink架构

1、基本组件栈

                                       

从下至上:

  • 1>、部署:Flink 支持本地运行、能在独立集群或者在被 YARN 或 Mesos 管理的集群上运行, 也能部署在云上;
  • 2>、运行:Flink 的核心是分布式流式数据引擎,意味着数据以一次一个事件的形式被处理;
  • 3>、API:DataStream、DataSet、Table、SQL API;
  • 4>、扩展库:Flink 还包括用于复杂事件处理,机器学习,图形处理的专用代码库。

2、基本架构

                          

Flink架构也遵循了Master-Slave架构设计原则,主要由两个组件构成:JobManager和TaskManager。JobManager为Master节点,TaskManager为Worker节点(slave).。所有组件之间的通信都是借助于Akka Framework。

  • Client:与JobManager构建Akka连接,然后将任务提交到JobManager。通过和JobManager之间进行交互获取任务执行状态。提交方式:客户端提交任务可以采用CLI方式或者通过使用Flink WebUI提交,也可以在应用程序中指定JobManager的RPC网络端口构建ExecutionEnvironment提交Flink应用。
  • JobManager:JobManager负责申请资源、协调以及控制整个job的执行过程,具体包括调度任务、处理checkpoint、容错等等。从客户端中接收提交的JobGraph,进行包装转换成ExecutionGraph(physical dataflow graph,并行化),然后根据集群中TaskManager上TaskSlot的使用情况(注册到Master节点上的TaskManager的slot使用情况),资源准备就绪之后就调度任务到TaskManager启动并运行任务。JobManager相当于整个集群的Master节点,且整个集群中有且只有一个活跃的JobManager。JobManager和TaskManager之间通过Actor System进行通信,获取任务执行的情况、维持心跳等工作。同时在任务执行过程中,JobManager会协调TaskManager进行CheckPoints 操作,所有的Checkpoint协调过程都是在FLink JobManager中完成,当任务完成后Flink会将任务执行的信息反馈给客户端,并且释放掉TaskManager中的资源以提供下一次提交任务使用。
  • TaskManager:负责具体的任务执行和相应任务在每个节点上的资源申请与管理。TM从JM接收到分配的任务,使用Slot资源启动Task,建立数据接入的网络连接(TM间底层使用Netty进行数据交换),接收数据并开始处理数据。一个TM中Slot之间内存隔离,slots间均分内存,但是共享CPU,所以提高了CPU的使用效率。

三、Flink编程模型

1、Flink根据数据集类型的不同将核心数据处理接口分为两大类:DataStream APIDataSet API。同时Flink将数据处理接口抽象成四层(如下图),用户可以根据需要选择任意一层抽象接口来开发Flink应用

  • SQL API:SQL API是Flink提供给用户完成流处理或批处理的高层抽象接口,通过SQL API可以让数据分析人员与开发人员跟快速上手,帮助其更专注于业务本身而不是受限于复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值