Flink__Flink1.10.0Concepts__Distributed Runtime Environment

Tasks and Operator Chains

对于分布式计算,Flink 把operator subtasks 运行子任务串连在一起,组合成Tasks。每个线程执行一个Task。 把算子任务串连到一个 Task 中运行是一种非常有用的优化:它减少了线程到线程间切换和缓存的开销,并且提高了整体吞吐量,减少了数据延迟。这种运行子任务的串连操作是可以配置的:更多细节请查看这里

下图中的数据流有5个运行子任务(subtasks),因此有5个并行线程:


image.png

Job Managers, Task Managers, Clients

Flink 运行时包含2种进程:

  • Job Managers (又称 Masters): Job Managers 负责协调分布式任务的运行。Master调度Tasks,协调Checkpoint执行,协调故障恢复等工作。
    Flink 的执行环境中至少有一个 Job Manager。如果配置了 Flink 的HA (高可用),会有多个 Job Manager,其中一个 Job Manager 始终是 Leader,其他Job Manager 是 Standby (备用)。

  • Task Managers (又称 Workers): Task Managers 负责执行数据流的tasks (更确切的说是: subtasks),并缓存和交换数据流的数据。
    Flink 的执行环境中至少有一个 TaskManager。

Job Managers 和 Task Managers 有多种不同启动方式:直接以 standalone cluster 形式在Linux 机器中启动,或者在 资源管理框架 YARN 或 Mesos 的 容器中(containers) 中启动。Task Manager 与Job Manager 保持连接上报自身状态,并接收Master分配的任务。

Client客户端(Job Client)不是运行时环境和程序执行的一部分,但它是任务执行的起点。Client 负责准备dataflow 任务执行流程 并发送到 JobManager。之后,Client 可以断开连接,或者保持连接用于接收Job执行进度相关的信息。

image.png

Task Slots and Resources

每个 Worker(TaskManager) 都是一个 JVM 进程,每个 TaskManager会在彼此隔离的线程中执行 一个或多个 subtasks 子任务。为了控制一个 Worker可以执行多少个Tasks 任务,Flink 引入了称为Task Slots 任务槽的概念,每个Worker至少包括一个Task Slot 任务槽。

每个task slot代表TaskManager的一些固定资源。例如: 一个 TaskManager 有3个 Slots,那 TaskManager为每个任务槽分配他自身1/3的资源。分配任务槽意味着subtasks 子任务不会与其他Jobs 作业争抢内存,而是为每个 Slot 预留一定数量的内存。注意:目前 Flink任务槽 Slots 仅隔离分配给TaskManager内存, 不会隔离分配给 TaskManager 的 CPU。

通过调整任务槽的数量,用户可以定义subtasks 子任务的隔离程度。TaskManager 有一个 Slot,表示每个Task group 任务组都在单独的 JVM 进程中运行。TaskManager 有多个 Slot,表示多个subtasks 子任务共享一个 JVM。在同一个 JVM 进程中的 subtasks 子任务 共享 TCP 连接 (通过多路复用技术) 和 心跳消息。多个Slots之间也会共享数据集和数据结构,这样可以减少每个subtasks 子任务的开销。

image.png

默认情况下,Flink 允许同一个 Job的 subtasks 子任务之间共享 Slot,即使这些subtasks 子任务属于不同的Tasks (这个 Task 可以理解为 Spark 的 Stage) ,只要这些Tasks属于同一个Flink-Job,subtasks就可以共享Slot。这样做的结果是一个 Slot可能负责整个Flink-Job的作业流水线(Pipeline)。Flink 允许 Slot 共享 带来2个好处:

  • Flink 集群所需要的 任务Slot 数与 Flink Job 中使用的并行度一致。不需要再额外计算一个程序要包含多个Tasks。
  • 更好的利用系统资源。没有 Slot Sharing 任务槽共享,非资源密集型的子任务source()/map() 占用的资源 将与资源密集的window() 窗口子任务占用的一样多。在我们的例子中,通过 Slot Sharing 任务槽共享,任务的并行度由2增加到6 可以充分利用 Slot 资源,同时确保重型任务能在 TaskManager 之间公平分配。
image.png

Flink API 包含一种 resource group 的机制 来阻止不希望发生的 Slot Sharing。
根据经验来看,较合理的共享槽 Slots 数量 应该与 CPU 的核数相一致。通过hyper-threading 超线程技术,每个任务槽将运行2个,或者多个线程。

State Backends

存储key/value 索引的确切数据结构依赖于所选择的 state backend。一种state backend在内存中使用 Hash Map 结构来存储数据,另一种state backend使用 RocksDB 来存储 Key/Value。除了定义数据结构来存储状态值之外,state backend也实现了获取 Key/Value 状态的时间点快照,并将状态值快照做为 Checkpoint 的一部分。

image.png

Savepoints

Flink 的Data Stream API可以从savepoint中恢复异常。savepoints能够保证在不丢失任何 状态数据 的情况下更新 Flink程序 和 Flink集群。

Savepoints 是手动触发的checkpoints,savepoints 会生成 程序快照 并将快照写入 state backend 中。savepoint 依赖常规的checkpoint机制。在执行执行过程中会定期在 worker 节点上生成 快照 和 检查点。状态恢复只需要最后一次完成的checkpoint,当最新的 checkpoint生成之后,就可以安全的删除之前完成的checkpoint。

savepoint特别像这些定期生成的 checkpoint,区别就是savepoint是用户触发的并且当生成新的checkpoint时,savepoint不会自动过期。可以用command line 命令行来创建 savepoint,或在取消一个 job 时,通过REST API来生成 Savepoint。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352