一、Flink提交任务的流程

  Flink任务提交后,Client向HDFS上传Flink的jar包和配置,之后向Yarn ResourceManager提交任务,ResourceManager分配Container资源并通知对应的NodeManager启动

ApplicationMaster,ApplicationMaster启动后加载Flink的jar包和配置构建环境,然后启动JobManager;之后Application Master向ResourceManager申请资源启动TaskManager

,ResourceManager分配Container资源后,由ApplicationMaster通知资源所在的节点的NodeManager启动TaskManager,NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager,TaskManager启动向JobManager发送心跳,并等待JobManager向其分配任务。

二、Flink任务调度原理

1、Program Code:我们编写的Flink应用程序代码。

2、JobClient:JobClient不是Flink程序执行的内部部分,但它是任务执行的起点。JobClient负责接受用户的程序代码,然后创建数据流,将数据流提交给

JobManager以便进一步执行。执行完成后,JobClient将结果返回给用户。

3、JobManager:主进程(也称为作业管理器)协调和管理程序的执行。它的主要指责包括安排任务,管理checkpoint,故障恢复等。机器集群中至少要有一个master,

master负责调度task,协调checkpoints和容灾,高可用设置的话可以有多个master,但要保证一个是leader,其他是standby;JobManager包含ActorSystem、Scheduler、

CheckPoint三个重要的组件。

4、TaskManager:从JobManager处接收需要部署的Task。TaskManager是在JVM中一个或多个线程中执行任务的工作节点。任务执行的并行性由每个TaskManager上可用

的任务槽决定。每个任务代表分配给任务槽的一组资源。例如:如果TaskManager有四个插槽,那么它将为每个插槽分配25%的内存。可以在任务槽中运行一个或多个线程。

同一插槽中的线程共享相同的JVM。同一JVM中的任务共享TCP连接和心跳信息。TaskManager的一个Slot代表一个可用线程,该线程具有固定的内存,注意Slot只对内存隔离,

没有对CPU隔离。

默认情况下,Flink允许子任务共享Slot,即使它们是不同的task的subtask,只要他们来自相同的job。这种共享可以有更好的资源利用率。

TaskManager是Flink的worker节点,他负责Flink中本机slot资源的管理以及具体task的执行。

TaskManager上的基本资源单位是slot,一个作业的task最终会部署在一个TM的slot上运行,TM会负责维护本地的slot资源列表,

并来与Flink Master和JobManager通信。

三、Work与Slot

  每一个worker(TaskManager)是一个JVM进程,他可能会在独立的线程上执行一个或多个subtask。为了控制一个worker能接收到多少个task,worker通过task slot来进行控制

(一个worker至少要有一个task slot)。

  每个task slot表示TaskManager拥有资源的一个固定大小的子集。假如一个TaskManager有三个slot,那么它会将其管理的内存分成三份给各个slot。资源slot化意味着一个subtask将不需要跟来自其他的job的subtask竞争被管理的内存,取而代之的是它将拥有一定数量的内存储备。需要注意的是,这里不会涉及到CPU的隔离,slot目前仅仅用来隔离

task的受管理的内存。

  通过调整task slot的数量,允许用户定义subtask之间如何互相隔离。如果一个TaskManager一个slot,那将意味着每个task group运行在独立的JVM中(该JVM可能是通过一个特定的容器启动的),而一个TaskManager多个slot意味着更多的subtask可以共享同一个JVM。而在同一个JVM进程中的task将共享TCP连接(基于多路复用)和心跳信息。他们也

可能共享数据集和数据结构,因此这减少了每个task的负载。

四、Flink程序架构

每个Flink程序都包含以下的若干流程

获得一个执行环境:(Execution Environment) 相当于Spark中的SparkContext

加在/创建初始数据:(Source)

指定转换这些数据:(Transformation)

指定放置计算结果的位置:(Sink)

触发程序执行

五、 Environment

执行环境StreamExecutionEnvironment是所有Flink程序的基础。

StreamExecutionEnvironment.getExecutionEnvironment(根据运行情况,返回本地或者集群的运行环境)  默认分区是8
  创建一个执行环境,表示当前执行程序的上下文。如果程序是独立调用的,则此方法返回本地执行环境:如果从命令行客户端调用程序以提交到集群,则此方法返回此集群的执行环境,也就是说,
getEexecutionEnvironment会根据查询运行的方式决定返回什么样的运行环境,是最常用的一种创建执行环境的方式。

StreamExecutionEnvironment.createLocalEnvironment(1) -》开始只有一个分区
  返回本地执行环境,需要在调用时指定默认的并行度。

StreamExecutionEnvironment.createRemoteEnvironment("localhost",8800)
  返回集群执行环境,将Jar提交到远程服务器。需要在调用时指定JobManager的IP和端口号,并指定要在集群中运行的Jar包。
  

六、Source

1、基于File的数据源

1.1、readTextFile(path)

1.1、readTextFile(path)
一列一列的读取遵循TextInputFormat规范的文本文件,并将结果作为String返回。

Flink提交流程和架构的更多相关文章

  1. Flink(二)【架构原理,组件,提交流程】

    目录 一.运行架构 1.架构 2.组件 二.核心概念 TaskManager . Slots Parallelism(并行度) Task .Subtask Operator Chains(任务链) E ...

  2. Flink源码剖析:Jar包任务提交流程

    Flink基于用户程序生成JobGraph,提交到集群进行分布式部署运行.本篇从源码角度讲解一下Flink Jar包是如何被提交到集群的.(本文源码基于Flink 1.11.3) 1 Flink ru ...

  3. Spark:三种任务提交流程standalone、yarn-cluster、yarn-client

    spark的runtime参考:Spark:Yarn-cluster和Yarn-client区别与联系浪尖分享资料 standalone Spark可以通过部署与Yarn的架构类似的框架来提供自己的集 ...

  4. 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?

    本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...

  5. 开篇 | 揭秘 Flink 1.9 新架构,Blink Planner 你会用了吗?

    本文为 Apache Flink 新版本重大功能特性解读之 Flink SQL 系列文章的开篇,Flink SQL 系列文章由其核心贡献者们分享,涵盖基础知识.实践.调优.内部实现等各个方面,带你由浅 ...

  6. flink01--------1.flink简介 2.flink安装 3. flink提交任务的2种方式 4. 4flink的快速入门 5.source 6 常用算子(keyBy,max/min,maxBy/minBy,connect,union,split+select)

    1. flink简介 1.1 什么是flink Apache Flink是一个分布式大数据处理引擎,可以对有限数据流(如离线数据)和无限流数据及逆行有状态计算(不太懂).可以部署在各种集群环境,对各种 ...

  7. 4 weekend110的YARN的通用性意义 + yarn的job提交流程

    Mr程序写完之后,提交给yarn,yarn会产生一个MRAppMaster,想说的是,yarn变得很 通用,yarn集群上,不光可以跑mr程序,还可以跑各种运算模型. 海量批处理,mapreduce ...

  8. iPhone应用提交流程:如何将App程序发布到App Store?

    对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store.Xcode 4.2开发工具已经把App提交 ...

  9. iPhone应用提交流程:如何将App程序发布到App Store-转

    对于刚加入iOS应用开发行列的开发者来说,终于经过艰苦的Coding后完成了第一个应用后最重要的历史时刻就是将应用程序提交到iTunes App Store.Xcode 4.2开发工具已经把App提交 ...

随机推荐

  1. 使用deepin系统自带命令切割视频使用lossless免费软件切割

    1,使用ffmpeg命令:ffmpeg -ss 00:00:10 -i gaodengshuxue.mp4 -vcodec copy -acodec copy -t 00:00:20 output.m ...

  2. python算法学习--待续

    几个算法网站 算法可视化网站:https://visualgo.net/en,通过动画展示算法实现过程 程序可视化网站:http://www.pythontutor.com/visualize.htm ...

  3. ts 学习笔记-基础篇

    目录 基础 原始数据类型 布尔值 数字 字符串 空值 Null 和 Undefined 任意值 类型推论 联合类型 接口 数组 函数 类型断言 申明文件 什么是申明文件 三斜线指令 第三方声明文件 内 ...

  4. atom之插件安装及相关

    1. simplified-chinese-menu 汉化软件 2. file-icons 加上文件图标 3. language-vue 加上vue语言支持 4. platformio-ide-ter ...

  5. java标识符,关键字,注释及生成Doc文档

    # java语法基础 ## 标识符,关键字与注释 ### 标识符 1.类名,变量名,方法名都称为标识符. 2.命名规则:(1):所有的标识符都应该以字母(AZ,或者az)美元符($)或者下划线(_)开 ...

  6. Redis 实战篇:巧用数据类型实现亿级数据统计

    在移动应用的业务场景中,我们需要保存这样的信息:一个 key 关联了一个数据集合,同时还要对集合中的数据进行统计排序. 常见的场景如下: 给一个 userId ,判断用户登陆状态: 两亿用户最近 7 ...

  7. Java异常01——捕获和抛出异常

    捕获和抛出异常 异常处理五个关键字 try , catch , finally , throw , throws try catch finally(快捷键:选中要要监控的代码语句 快捷键: ctrl ...

  8. Upload-labs 文件上传靶场通关攻略(上)

    Upload-labs 文件上传靶场通关攻略(上) 文件上传是Web网页中常见的功能之一,通常情况下恶意的文件上传,会形成漏洞. 逻辑是这样的:用户通过上传点上传了恶意文件,通过服务器的校验后保存到指 ...

  9. python3.7安装和pycharm安装教程. 以及pycharm的破解教程

    前言: 供对python初学者查阅, pycharm破解教程参阅了: https://blog.csdn.net/u014044812/article/details/78727496 1. 安装py ...

  10. CSS Flex布局完全指南 #flight.Archives002

    Title/CSS Flex布局完全指南 #flight.Archives002 序(from Ruanyf) : 网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模 ...