一、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. MySQL之查询操作

    1)使用in查询, 保持顺序 SELECT * FROM `template_data` where template_id in (7339747298123169843,7339747324194 ...

  2. vue 适配不同分辨率显示问题

    新建 js 文件 rem.js class DevicePixelRatio { constructor() { // this.flag = false; } // 获取系统类型 _getSyste ...

  3. a标签与Blob下载文件的区别和获取文件下载进度

    文件下载的几种方式. 大家都做过文件下载,无非就是通过a标签给定一个href. 用户点击下载按钮. 或者使用Blob的方式进行下载. 这两种是很常见的,也是我们平时做使用最多的方式. 那么我们知道这2 ...

  4. 【邮件伪造】SPF与DKIM验证原理及实战解析(上)

    0x01 前言 大家好,我是VoltCary 本篇文章是系列邮件安全专题的第一篇,主要帮助大家掌握邮件安全的基础知识. 基础内容包括: SMTP协议 邮件安全验证原理与过程 SPF验证与DKIM签名验 ...

  5. 使用腾讯云对象存储 COS 作为 Velero 后端存储,实现集群资源备份和还原

    Velero(以前称为 Heptio Ark)是一个开源工具,可以安全地备份和还原,执行灾难恢复以及迁移 Kubernetes 集群资源和持久卷,可以在 TKE 集群或自建 Kubenetes 集群中 ...

  6. 离线部署yum依赖

    利用本地源解决在无网环境部署应用需要解决的问题: 应用需要哪些软件包? 如何把应用依赖的软件包制作成一个精简的本地源? 如何使用本地源? 第一个问题使用yum-utils解决,它带的repotrack ...

  7. ASP.NET Core 中的速率限制中间件的使用

    简介 在ASP.NET Core中,速率限制中间件是用来控制客户端对Web API或MVC应用程序发出请求的速率,以防止服务器过载和提高安全性. 下面是 AddRateLimiter 的一些基本用法: ...

  8. Windows 配置自动更新重启策略

    I. 打开策略编辑器 [Win + R]打开 "运行" 窗口,输入: gpedit.msc 打开"本地组策略编辑器". II. 设置不自动重启 启用策略,选择在 ...

  9. AsyncLocal的妙用

    AsyncLocal<T>是一个在.NET中用来在同步任务和异步任务中保持全局变量的工具类. 它允许你在不同线程的同一个对象中保留一个特定值,这样你可以在不同的函数和任务中访问这个值. 这 ...

  10. CDS标准视图:催款冻结 I_DunningBlockingReasonCode

    视图名称:催款冻结 I_DunningBlockingReasonCode 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Blocking R ...