Flink容错机制第六篇 分布式架构

一,Flink分布式架构

分布式系统需要解决:分配和管理在集群的计算资源、处理配合、持久和可访问的数据存储、失败恢复。Flink专注分布式流处理。

怎么去设计分布式架构需要根据业务需要和技术水平配置,官网上给出了Flink运行时的基本分布式架构

Flink 运行时环境由两种类型进程组成:

作业管理器(也称为 master)用于协调程序的分布式执行。它的主要功能是调度任务,调整检查点,并在任务失败时安排恢复过程等。

每个 Flink 环境中只有一个作业管理器。未来的高可用设计中会包含多个作业管理器,其中一个是 leader,其他作为备份程序。

任务管理器(也称为 worker)用于执行数据流图的任务(更准确地说,是计算子任务),并对数据流进行缓冲、交换。

每个 Flink 环境中至少包含一个任务管理器。

可以以多种方式启动作业管理器和任务管理器:直接作为独立的集群在机器上启动,在容器中启动,或者通过 YARN、Mesos 这类资源框架进行管理。启动之后,任务管理器会主动上连到作业管理器来报告自身的状态,以便作业管理器来分配任务。

客户端的主要作用是准备并向作业管理器发送数据流图,它实际上并不是运行时环境的一个组成部分。在发送完数据流图之后,客户端可以选择断开与作业管理器的连接,也可以继续保持连接以等待程序运行结果。客户端程序可以以 Java/Scala 程序的形式执行,也可以以命令行的形式(./bin/flink run ...)执行。

在分布式环境中,master节点以master mode运行,worker节点以standalone模式运行。

配置步骤简述

1. 在flink-conf.yaml文件中进行一些基本的配置,包括jobmanager地址,JVM堆大小,task slot申请数量等。
2. 配置worker文件,表示集群的taskManager
3. 分发配置文件
4. 启动flink服务
5. 查看flink的web界面验证服务

二,Flink-客户端

在framework模式下,程序代码通过Optimizer/Graph Builder转化成流图,然后打包成jar包,通过客户端的akka提交给master节点。

简单来说,流图是flink的数据结构,DataStream API所编写的流处理应用程序在生成作业图(JobGraph)并提交给JobManager之前,会预先生成流图(StreamGraph)。Flink官方提供了一个计划可视化器来图形化执行计划,该计划可视化器基于Flink API所生成的计划的JSON格式表示绘制图形。但是需要注意的是,计划的JSON形式表示缺失了很多属性以及部分节点(比如虚拟节点等);批处理程序通过对应的API-Optimizer/流处理通过DataStream API-graphBuilder将程序形成流图然后打包成jar包发送。

 

三,Flink-作业管理器

Master Node接收到任务jar包之后,解包并将流图匹配转化为面向Flink运行时执行引擎的共同抽象——作业图。

作业图(JobGraph)是唯一被Flink的数据流引擎所识别的表述作业的数据结构,也正是这一共同的抽象体现了流处理和批处理在运行时的统一。

scheduler负责分配调度任务,向任务管理器申请task slot,checkpoint coordinator负责控制checkpoint。

四,Flink-任务管理器

在worker节点中,分配一个flink进程,在这个进程中有分配的task slot,每个task slot是一个JVM线程(一般情况),并做作业图中分配的运算节点。体现了任务的并行性,然后通过network manager彼此交流数据流,当检查点开始的时候将任务状态备份存储到数据库。

总体架构例子:

其他可配置的apache组件:YARN相当于cluster manager负责分配调度master和worker,zookeeper负责分布式协调,多是在系统中起到分布式锁或者节点损坏重新选举masterNode的用处,kafka在source中定位数据源并转化为flink可消费的topic,作为一个日志文件的数据流pipeline通过connector辅助系统的运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值