ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【大数据面试】Flink 01:概述

2022-02-07 20:02:17  阅读:199  来源: 互联网

标签:01 管理器 Flink JobManager TaskManager 面试 API 数据流


一、概述

1、介绍

无界和有界数据流进行有状态计算的分布式引擎和框架,并可以使用高层API编写分布式任务,主要包括:

DataSet API(批处理):静态数据抽象为分布式数据集,方便使用操作符进行处理(Python)

DataStream API(流处理):对分布式流数据处理,从而进行各种操作

Table API:将结构化数据抽象为关系表,并使用类SQL的DSL的表进行查询

其他特定领域的库,例如机器学习、图计算

2、分层架构介绍

(1)介绍

分层架构,下层组件提供抽象服务于上层

 

(2)自下而上各层介绍

Deploy层:Flink的不同部署模式,包括local、Standalone脱机、Cluster、Cloud等

Runtime层:提供Flink计算的核心实现(过程函数ProcessFunction)

API层:面向流(DataStream)处理和批(Batch)处理的API

Libraries层:应用框架,CEP(复杂事件处理)、基于SQL的操作(Table/SQL API)

(3)详解

Runtime层:有状态流通过过程函数(ProcessFunction)嵌入到DataStreamAPI中

API层:DataStream API提供了通用的数据处理构建模块,比如多种形式的转换(transformations),连接(joins),聚合(aggregations),窗口操作(windows)等等。

Libraries层:TableAPI是以表为中心的声明式编程,提供可比较的操作,执行前经过内置优化器进行优化

3、运行组件

(1)组成

作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)

(2)各组件功能

作业管理器JobManager:集群管理者Master和协调者、将作业图(JobGraph)转化为数据流图/执行图;请求资源、分发、协调;

资源管理器ResourceManager:(分配slot插槽)将有空闲插槽的TaskManager分配给JobManager,发起会话、中止释放资源;

任务管理器TaskManager:负责执行计算,(包含一定并发量)注册插槽、与同一程序的task M交换数据;

分发器Dispatcher:跨作业运行、为应用提交提供了REST接口。

Client:将Flink程序提交到集群,建立到JobManager的连接,将Flink Job提交给JobManager

4、Flink的部署模式

(1)Standalone模式

(2)Yarn模式-Hadoop>2.2

两种模式:Session-Cluster和Per-Job-Cluster模式

何时向yarn申请资源,创建flink集群

(3)Kubernetes部署

启动Flink的docker组件:JobManager、TaskManager、JobManagerService 

5、任务提交流程

(1)常规

 

(2)yarn模式

 

6、任务调度相关概念

(1)TaskManger与Slots:JVM进程、Task Slot是静态的概念,是指TaskManager具有的并发执行能力

(2)程序与数据流(DataFlow):Flink程序-Source、Transformation和Sink,转换运算(transformations)跟dataflow中的算子(operator)是一一对应的关系

(3)执行图(ExecutionGraph):直接映射成的数据流图是StreamGraph,也被称为逻辑流图,需要转换为物理视图

执行图包括4层:StreamGraph->JobGraph->ExecutionGraph->物理执行图

(4)并行度(Parallelism):特定算子的子任务(subtask)的个数

算子之间传输数据的形式:One-to-one类似于窄依赖,Redistributing类似于宽依赖

(5)任务链(OperatorChains):相同并行度的One-to-one操作算子,形成一个task,减少线程之间的切换和基于缓存区的数据交换

7、Flink的基础编程模型

Flink 程序的基本构建是数据输入来自一个 Source,Source 代表数据的输入端,经过 Transformation 进行转换,然后在一个或者多个Sink接收器中结束。

数据流(stream)就是一组永远不会停止的数据记录流,而转换(transformation)是将一个或多个流作为输入,并生成一个或多个输出流的操作。

执行时,Flink程序映射到 streaming dataflows,由流(streams)和转换操作(transformation operators)组成。

 

 

标签:01,管理器,Flink,JobManager,TaskManager,面试,API,数据流
来源: https://www.cnblogs.com/liujinhui/p/15868961.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有