一、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. 朋友要招几个java,让帮忙出点面试题目

    上周朋友说要招几个高级点的java,网上那些java面试宝典已经被人背得熟透了,让帮忙出出几个面试的问题,主要看看对所使用得语言有较深入得了解,不停留在使用什么开源框架,和对自己一些项目得见解.当然还 ...

  2. mongo迁移工具之mongo-shake

    最近需要进行MongoDB中数据迁移,之前使用过阿里系的redisShake感觉不错, 这次打算使用mongoShake来进行同步 github: https://github.com/alibaba ...

  3. MySQL8.0安装与使用

    Windows: 1.下载:https://dev.mysql.com/downloads/mysql/ 推荐使用镜像:http://mirrors.sohu.com/mysql/MySQL-8.0/ ...

  4. elementui半年选择组件

    1.基于elementui开发的半年选择组件 2.调用 <el-halfyear-picker v-model="date" :size="size"&g ...

  5. 《JavaScript 模式》读书笔记(7)— 设计模式3

    这一篇,我们学习本篇中最为复杂的三个设计模式,代理模式.中介者模式以及观察者模式.这三个模式很重要!! 七.代理模式 在代理设计模式中,一个对象充当另一个对象的接口.它与外观模式的区别之处在于,外观模 ...

  6. Consul 学习总结

    什么是Consul? Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接.Consul提供服务发现.服务网格(service mesh).流量管理和网 ...

  7. 在 ASP.NET Core 2.1 之后与 HttpClient 工厂一起使用 Polly

    在 ASP.NET Core 2.1 之后与 HttpClient 工厂一起使用 Polly 在 ASP.NET Core 2.1 中提供的 HttpClient factory 提供了一种预配置 H ...

  8. SpringBoot配置文件敏感信息加密,springboot配置文件数据库密码加密jasypt

    使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些.打开application.properties或application.yml,比如mysq ...

  9. RedisTemplate配置的jackson.ObjectMapper里的一个enableDefaultTyping方法过期解决

    1.前言 最近升级SpringBoot,从2.1.6版本升级到2.2.6版本,发现enableDefaultTyping方法过期过期了. 该方法是指定序列化输入的类型,就是将数据库里的数据安装一定类型 ...

  10. 时间轮在 Netty , Kafka 中的设计与实现

    本文基于 Netty 4.1.112.Final , Kafka 3.9.0 版本进行讨论 在业务开发的场景中,我们经常会遇到很多定时任务的需求.比如,生成业务报表,周期性对账,同步数据,订单支付超时 ...