当前位置:   article > 正文

Flink核心功能和原理_flink原理、实战与性能优化

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 监控

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/607517
推荐阅读
相关标签
  

闽ICP备14008679号