第一章 Flink基本概念及业务场景介绍

1.1、Flink引入

数据质量监控平台告警模块:

1、监控平台的告警部分,负责采集到的监控数据会直接往 kafka 里塞
2、flink这边需要从 kafka topic 里面实时读取到监控数据,并将读取到的监控数据做一些 聚合/转换/计算 等操作,
3、将计算后的结果告警规则的阈值进行比较,然后做出相应的告警措施(钉钉群、邮件、短信、电话等)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mWPJRxs-1633785795527)(%E7%AC%AC%E4%B8%80%E7%AB%A0%20Flink%E5%8E%9F%E7%90%86.assets/image-20211009170207662.png)]

  • 典型应用场景
    在这里插入图片描述
1.2、Flink和Spark区别
  • 根本区别:
    • Flink理念:批是流的特例,每一条数据都能触发计算
    • Spark理念:流是批的特例,靠时间积攒数据触发计算

(1)Micro Batching模式

  • 架构实现:有一个自然流数据流入系统进行攒批的过程,这在一定程度上增加了延时

在这里插入图片描述

(2)Native Streaming模式

  • 架构实现:每条数据到来都进行计算,计算延时性能更低

在这里插入图片描述

1.2、架构体系
  • Flink本身用Java和Scala实现的,因此所有组件都是基于JVM(Java虚拟机)

在这里插入图片描述

(1)JobManager

  • 也称之为 Master,用于协调分布式执行,它们用来调度 task,协调检查点,协调失败时恢复等,高可用模式会有多个master处理器(主备)。

Ⅰ、ResourceManager:负责管理Flink的处理资源单元——TaskManager Slot,当JobManager申请TaskManager slot时,ResourceManger会指示一个拥有空闲slot的TaskManager将其slot提供给JobManager;

Ⅱ、Dispatcher并不是必需的组件跨多个作业运行,它提供了一个REST接口来让我们提交需要执行的应用,一旦某个应用提交执行,则Dispatcher会启动一个JobManager并将应用转交给它。

Ⅲ、JobMaster:负责管理一个单一的执行JobGraph,多个作业可以在Flink集群中同时运行,每个作业都有自己的JobMaster,总是有一个JobManager。

(2)TaskManagers

  • 称之为 Worker, 用于执行一个 dataflow 的 task(或者特殊的 subtask)、 数据缓冲和 datastream 的交换, Flink 运行时至少会存在一个 worker 处理器。

在这里插入图片描述

1.3、部署模式

(1)Local模式

​ 在开发学习中使用,该模式下Flink整体运行在Single JVM中。

(2)Cluster模式

​ 在生产环境的集群模式,既可以Standalone的方式进行部署,也可以与其他资源系统进行集成部署,比如Yarn进行集成。

  • Standalone Cluster模式

在这里插入图片描述

  • HA方案部署

在这里插入图片描述

(3)Cloud模式

​ 在云产品上部署。

1.4、类库&算子

(1)类库

  • CEP - 复杂事件处理类库,核心是一个状态机,广泛应用于事件驱动的监控预警类业务场景。
  • ML - 机器学习类库,机器学习主要是识别数据中的关系、趋势和模式,一般应用在预测类业务场景。
  • GELLY - 图计算类库,图计算更多的是考虑边和点的概念,一般被用来解决网状关系的业务场景。

(2)算子

  • 从数据流分类
    • 单流处理:一个数据源
    • 多流处理:多个数据源

(3)多流操作

  • 将多流转换为单流

    • UNION:将多个字段类型一直数据流合并为一个数据流

在这里插入图片描述

  • JOIN:将多个数据流(数据类型可以不一致)连接为一个数据流

在这里插入图片描述

(4)单流操作

  • 将多流变单流后按数据的输入输出不同归类
1.5、基本概念

(1)数据流处理相关

在这里插入图片描述

  • Stream Dataflow:流处理过程;
  • Source Operator:从数据源提取数据的操作叫做;
  • Tranformation Operators:中间的map(),聚合、统计等操作
  • sink operators:最后结果数据的流出

(2)数据流划分相关

在这里插入图片描述

  • stream partitions:数据流分区划分
  • operator subtasks:并行计算数,由operators划分,在不同的机器或容器中分不同的线程独立运行;

(3)数据流在Operator传递相关

  • one-to-one 模式:两个operator用此模式传递的时候,会保持数据的分区数和数据的排序;
  • Redistributing 模式:这种模式会改变数据的分区数;每个一个operator subtask会根据选择transformation把数据发送到不同的目标subtasks,比如keyBy()会通过hashcode重新分区,broadcast()和rebalance()方法会随机重新分区;

(4)Workers, Slots, Resources

在这里插入图片描述

  • 每一个TaskManager是个jvm,每个jvm中可以执行一个或者多个subtasks,jvm中taskSlot的数量决定了接受多少个task

  • 每个tasksolt都有固定的资源,比如TaskManager有三个task solts,taskManager把平均把管理的内存分配到三个task slot中,这样solt中的task不会跟其他的job竞争资源;默认上Flink许可subtasks去分享同一个是slots;但要保证这些subtask是不同的task,并且来自相同的Job;极端情况下,一个slot中执行整个job的task;solt分享有两个重要的好处:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

随缘清风殇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值