一、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. 【C++】关于 Visual Studio 的使用技巧(保姆级教程)

    目录 fliter 视图 输出文件位置设置 查看预处理结果 将目标文件转换为可读的汇编 自定义程序入口 调试时查看变量在内存中的具体值 查看代码的反汇编 fliter 视图 visual studio ...

  2. 在C#中调用EVAL函数方法,通过字符串计算

    一.用 MSScriptControl 在 C# 中执行 JavaScript 代码   javascript 中有个eval方法,用过的人都知道他的方便和强大之处. 在C#中,我们也可以通过Com组 ...

  3. Day01 Markdown 学习笔记

    Day01 Markdown 学习笔记 1.标题 n级标题 = n个"#" + 空格 + 标题名称 (最多6个) 2.文本 Hello World ​ Hello World ​ ...

  4. 百度地图 自定义弹窗 InfoBox

    infoBox文档地址: https://api.map.baidu.com/library/InfoBox/1.2/docs/symbols/BMapLib.InfoBox.html infobox ...

  5. TaurusDB库表时间点极速恢复,大幅缩短数据恢复时间

    经过多组实验对比,对于大实例下仅需恢复几张表数据的情况,有显著优化效果.尤其针对游戏业务等需要频繁回档的场景,将大幅度缩短因数据恢复导致的停服时间.后续我们将逐步在公有云上开放此特性,以惠及更多用户. ...

  6. Advanced .NET Remoting: 第 8 章 创建连接器

    第 8 章 创建连接器 上一章向您展示了各种类型的连接器,以及它们对于请求的同步和异步处理过程.到目前为止,我一直忽略的一个最为重要的步骤是:初始化连接器和连接器链.连接器通常既不是直接待代码中创建, ...

  7. Rocky Linux8升级9随记

    发现Rocky Linux已经升级了9.0版本,看着自己用着的8.5版本,跃跃欲试,于是就索性升级了.两者的支持年限没有太大的差别,先说我的想法:升不升级无所谓. 并不是9.0有什么特别牛的特性,只是 ...

  8. 【转载】 Spring Security做JWT认证和授权

    https://www.jianshu.com/p/d5ce890c67f7 上一篇博客讲了如何使用Shiro和JWT做认证和授权(传送门:https://www.jianshu.com/p/0b11 ...

  9. SpringBoot支持Kafka多源配置的同时还要支持启停配置化,是真的会玩

    开心一刻 今早,女朋友给我发微信 她:宝贝,你要记住 她:我可是你女朋友,你相亲就亲,想抱就抱 她:不要老是问我,男生要主动一些 我:可是你上次报警可不是这么说的 基础回顾 Spring Boot 集 ...

  10. Karmada v1.12 版本发布!单集群应用迁移可维护性增强

    本文分享自华为云社区<Karmada v1.12 版本发布!单集群应用迁移可维护性增强>,作者:云容器大未来. Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署 ...