Flink核心功能和原理

1.Flink的特性

  • 支持高吞吐、低延迟、高性能的流处理
  • 支持带有事件时间的窗口(Window)操作
  • 支持有状态计算的 Exactly-once 语义
  • 支持高度灵活的窗口(time/count/session)Window 操作,以及 data-driven 驱动
  • 支持具有 BackPressure 功能的持续流模型
  • 支持基于轻量级分布式快照(Snapshot)实现的容错
  • 同时支持处理流批一体
  • Flink 在 JVM 内部实现了自己的内存管理
  • 支持迭代计算
  • 支持程序自动优化:避免特定情况下 Shuffle、排序等昂贵操作,中间结果进行缓存

2.Flink核心四大基石
在这里插入图片描述
在这里插入图片描述

6.Flink执行引擎解析/架构

在这里插入图片描述

  • Job Client:JobClient 不是 Flink 程序执行的内部部分,但它是任务执行的起点。JobClient 负责接受用户的程序代码,然后创建数据流,将数据流提交给 JobManager 以便进一步执行。 执行完成后,Job Client 将结果返回给用户

  • JobManager:主进程(也称为作业管理器)协调和管理程序的执行。它的主要职责包括安排任务,管理 checkpoint,故障恢复等。机器集群中至少要有一个 master,master 负责调度 task,协调 checkpoints 和容灾,高可用设置的话可以有多 master,但要保证一个是 leader, 其他是 standby;JobManager 包含 ActorSystem、Scheduler、CheckPoint三个重要的组件

  • TaskManager:从 JobManager 处接收需要部署的 Task。TaskManager 是在 JVM 中的一个或多个线程中执行任务的工作节点。任务执行的并行性由每个 TaskManager 上可用的任务槽决定。每个任务代表分配给任务槽的一组资源。例如,如果 TaskManager 有四个插槽,那么 它将为每个插槽分配 25%的内存。可以在任务槽中运行一个或多个线程。同一插槽中的线程共享相同的 JVM。同一 JVM 中的任务共享 TCP 连接和心跳消息。TaskManager 的一个 Slot 代表一个可用线程,该线程具有固定的内存,这里 Slot 只对内存隔离,没有对 CPU 隔离。 默认情况下,Flink 允许子任务共享 Slot,即使它们是不同 task 的 subtask,只要它们来自相同的 job。这种共享可以有更好的资源利用率。

  • TaskSlot:任务槽,类似于 YARN 当中的 Container,用于资源的封装。但是在 Flink 中, taskSlot 只负责封装内存的资源,不包含 CPU 的资源。每一个 TaskManager 中会包含 3 个 TaskSlot,所以每一个 TaskManager 中最多能并发执行的任务是可控的,最多 3 个。TaskSlot 有独占的内存资源,在一个 TaskManager 中可以运行不同的任务。

  • Task:TsakSlot 当中的 Task 就是任务执行的具体单元。

7.Flink容错 Checkpoint 和 State

8.Flink Time

9.Flink 内部原理
9.1容错机制
9.2调度机制
9.3迭代机制
9.4BackPressure 监控

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

phial03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值