一、Flink运行部署模式和流程
部署模式:
1、Local 本地部署,直接启动进程,适合调试使用
2、Standalone Cluster集群部署,flink自带集群模式
3、On Yarn 计算资源统一由Hadoop YARN管理资源进行调度,按需使用提高集群的资源利用率,生产环境
 
运行流程
1、用户提交Flink程序到JobClient,
2、JobClient的 解析、优化任务,然后提交任务到JobManager
3、TaskManager运行task, 并上报信息给JobManager
JobManager 包工头
TaskManager 任务组长
Task solt 工人 (并行去做事情)
 
二、架构和组件
2.1 任务流程图
 
2.2 JobManager 介绍
 2.2.1 JobManager功能
    协调 Flink 应⽤程序的分布式执⾏
    它决定何时调度下⼀个 task
    对完成的 task 或执⾏失败做出反应
    协调 checkpoint,并且协调从失败中恢复等等
 2.2.2 JobManager组成
     ResourceManager:负责 Flink 集群中的资源提供、回收、分配,它管理task slots
     Dispatcher:提供了⼀个 REST 接⼝,⽤来提交 Flink 应⽤程序执⾏
                       运⾏ Flink WebUI ⽤来提供作业执⾏信息                       
                       为每个提交的作业启动⼀个新的 JobMaster      
     JobMaster:负责管理单个JobGraph的执⾏,Flink 集群中可以同时运⾏多个作业,每个作业都有⾃⼰的 JobMaster
                      ⾄少有⼀个 JobManager,⾼可⽤(HA)设置中可能有多个 JobManager,其中⼀个始终是 leader,其他的则是 standby
 
2.3 TaskManager (任务组⻓,搬砖的⼈)
 2.3.1 简介
         负责计算的worker节点,还有上报节点内存、任务运⾏情况给JobManager等工作
         ⾄少有⼀个 TaskManager,也称为 worker 执⾏作业流的task,并且缓存和交换数据流
         在 TaskManager 中资源调度的最⼩单位是 Task Slot
 2.3.2 进阶概念
         2.3.2.1 TaskManager中 task slot 的数量表示并发处理 task 的数量
         2.3.2.2 ⼀个 task slot 中可以执⾏多个算⼦,⾥⾯多个线程
         2.3.2.3 算⼦类型opetator、source、transformation、sink
         2.3.2.4 对于分布式执⾏,Flink 将算⼦的 subtasks 链接成 tasks,每个 task 由⼀个线程执⾏
         2.3.2.5 图中source和map算⼦组成⼀个算⼦链,作为⼀个task运⾏在⼀个线程上
         2.3.2.6 将算⼦链接成 task 是个有⽤的优化:它减少线程间切换、缓冲的开销,并且减少延迟的同时增加整体吞吐量
2.4 Task Slots 任务槽
   2.4.1 Task Slot是Flink中的任务执⾏器,每个Task Slot可以运⾏多个subtask ,每个subtask会以单独的线程来运⾏
   2.4.2 每个 worker(TaskManager)是⼀个 JVM 进程,可以在单独的线程中执⾏⼀个(1个solt)或多个 subtask
   2.4.3 为了控制⼀个 TaskManager 中接受多少个 task,就有了task slots概念(⾄少⼀个)
   2.4.4 每个 task slot 代表 TaskManager 中资源的固定⼦集
   2.4.5 Task 正好封装了⼀个 Operator 或者 Operator Chain 的parallel instance。
   2.4.6 Flink 算⼦之间可以通过【⼀对⼀】模式或【重新分发】模式传输数据
   注意点:
   所有Task Slot平均分配TaskManger的内存, TaskSolt 没有CPU 隔离
   当前 TaskSolt 独占内存空间,作业间互不影响
   ⼀个TaskManager进程⾥有多少个taskSolt就意味着多少个并发
   Task Solt数量建议是cpu的核数,独占内存,共享CPU
   
三、并行度
3.1 Flink是分布式计算流式框架
    程序在多节点并⾏执⾏,所以就有并⾏度 Parallelism概念
    DataStream 就像是有向⽆环图(DAG),每⼀个 数据流(DataStream) 以⼀个或多个 source 开始,以⼀个或多个sink 结束
3.2 流程
   ⼀个数据流( stream) 包含⼀个或多个分区,在不同的线程/物理机⾥并⾏执⾏
   每⼀个算⼦( operator) 包含⼀个或多个⼦任务( subtask),⼦任务在不同的线程/物理机⾥并⾏执⾏
   ⼀个算⼦的⼦任务subtask 的个数就是并⾏度( parallelism)
   
3.3 并行度的设置
    Flink流程序中不同的算⼦可能具有不同的并⾏度,可以在多个地⽅配置,有不同的优先级。
    某些算⼦⽆法设置并⾏度,本地IDEA运⾏ 并⾏度默认为cpu核数
    优先级从高到低依次如下
    3.3.1 算子
    map( xxx ).setParallelism(2)
    3.3.2 全局env
    env.setParallelism(2)
    3.3.3 客户端cli(推荐走客户端方式,不走全局env方式)
    ./bin/flink run -p 2 xxx.jar
    3.3.4 Flink配置⽂件
    /conf/flink-conf.yaml 的 parallelism.defaul 默认值
   
3.4 TaskSolt和parallelism并行度,定义区分
  task slot是静态的概念,是指taskmanager具有的并发执⾏能⼒;
  parallelism是动态的概念,是指 程序运⾏时实际使⽤的并发能⼒
  前者是具有的能⼒⽐如可以100个,后者是实际使⽤的并发,⽐如只要20个并发就⾏。
 
 
 

Flink 部署和整体架构的更多相关文章

  1. 深度解读MRS IoTDB时序数据库的整体架构设计与实现

    [本期推荐]华为云社区6月刊来了,新鲜出炉的Top10技术干货.重磅技术专题分享:还有毕业季闯关大挑战,华为云专家带你做好职业规划. 摘要:本文将会系统地为大家介绍MRS IoTDB的来龙去脉和功能特 ...

  2. Socket服务器整体架构概述

    转载:http://www.cnblogs.com/tianzhiliang/archive/2010/10/28/1863684.html Socket服务器主要用于提供高效.稳定的数据处理.消息转 ...

  3. 基于Hadoop的大数据平台实施记——整体架构设计[转]

    http://blog.csdn.net/jacktan/article/details/9200979 大数据的热度在持续的升温,继云计算之后大数据成为又一大众所追捧的新星.我们暂不去讨论大数据到底 ...

  4. 基于Hadoop的大数据平台实施记——整体架构设计

    大数据的热度在持续的升温,继云计算之后大数据成为又一大众所追捧的新星.我们暂不去讨论大数据到底是否适用于您的组织,至少在互联网上已经被吹嘘成无所不能的超级战舰.好像一夜之间我们就从互联网时代跳跃进了大 ...

  5. JDFS:一款分布式文件管理系统,第五篇(整体架构描述)

    一 前言 截止到目前为止,虽然并不完美,但是JDFS已经初步具备了完整的分布式文件管理功能了,包括:文件的冗余存储.文件元信息的查询.文件的下载.文件的删除等.本文将对JDFS做一个总体的介绍,主要是 ...

  6. SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  7. 《程序猿闭门造车》之NBPM工作流引擎 - 项目整体架构

    前言: 又是一年一度的圣诞节,可这关我什么事呢 :( ,好不容易周末了,还是说说NBPM吧,前不久我发布了一篇关于工作流的文章:<程序猿闭门造车>之NBPM工作流引擎 - 开篇,很多爱好工 ...

  8. TAF /tars必修课(一):整体架构理解

    来自零点智能社区 一.前言 TAF,一个后台逻辑层的高性能RPC框架,目前支持C++,Java, node 三种语言, 往后可能会考虑提供更多主流语言的支持如 go等,自定义协议JCE,同时也支持HT ...

  9. 【Canal源码分析】整体架构

    本文详解canal的整体架构. 一.整体架构 说明: server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列 (1个server对应1..n个instance) ...

  10. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

随机推荐

  1. JS之Class类

    转载:https://juejin.cn/post/7098891689955164168 ECMAScript 6 提供了更接近传统语言的写法,新引入的class关键字具有正式定义类的能力.类(cl ...

  2. 接口压力测试工具之go-wrk

    go-wrk 是一个用Go语言实现的轻量级的http基准测试工具,类似于wrk,本文将简单介绍一下如何使用go-wrk实现接口的性能(压力)测试. github地址:https://github.co ...

  3. JDK 18 及以上使用标准输出流中文输出乱码问题

    著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 链接:https://stazxr.cn/2024/12/05/JDK-18-以上使用标准输出流中文输出乱码问题/ 来源:終わり ...

  4. C# 企业微信消息推送对接,实现天气预报推送

    C# 企业微信消息推送对接,实现天气预报推送 迷恋自留地 准备工作 需要获取的东西1. 企业Id,2.应用secret 和 应用ID 获取企业id 注册完成后,在我的企业=>企业信息=>最 ...

  5. C#生成Guid的几种方式-迷恋自留地

    var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12 var uuidN = Guid.NewGu ...

  6. uni-app Vue3项目引入Tailwind CSS

    前情 Tailwind CSS 是一个原子类 CSS 框架,它将基础的 CSS 全部拆分为原子级别,同时还补全各种浏览器模式前缀,兼容性也不错.它的工作原理是扫描所有 HTML 文件.JavaScri ...

  7. DA14531芯片固件逆向系列(3)- BLE收包流程分析及漏洞挖掘思路分享

    文章首发于 https://xz.aliyun.com/t/9194 前言 本文介绍定位和分析DA14531收包流程的方法,并提供简单的BLE协议漏洞挖掘思路. 定位收包函数 通过查看DA14531的 ...

  8. 解密prompt系列44. RAG探索模式?深度思考模式?

    前一阵多步RAG的风吹入了工业界,kimi推出了探索版本,各应用都推出了深度搜索,You.COM更是早就有了Genius的多步模式.其实都是类似multi-hop RAG的实现.之前学术界在讨论mul ...

  9. js 进制转换:十六进制转十进制、十进制转十六进制、十六进制转ASCII码、

    因为近期做小程序,蓝牙连接硬件,需要根据module bus通信协议解析数据,用到了很多标题的算法转换,借此总结一下. 十六进制 转 十进制 function hex2dec(hex) { var l ...

  10. 【Java】【SpringBoot】CP03:热部署

    This article is written by Xrilang(Chinese Name:萌狼蓝天) If you want find me ,You can contact me in Bil ...