Flink

Flink:是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算,支持流批一体化处理,从底层APIS->核心APIS(DataStream、DataSet)->声明式领域专用语言(Table API)->最高层语言(SQL)。

批处理:有界、持久、大量,批处理适合需要访问全套记录才能完成的计算工作,一般用于离线统计;

流处理:无界、实时,流处理无需针对整个数据集执行操作,而是对通过系统传输的每个数据项进行操作,一般用于实时统计;

一、基础

  1. 特点

    A. 高吞吐和低延迟,可每秒处理数百万各事件,毫秒级延迟;

    B. 结果的准确性,提供了事件时间和处理时间语义;

    C. 精准一次的状态一致性保证;

    D. 可以连接到最常用的存储系统,如Kafka、HDFS等;

    E. 高可用:可与K8s、YARN等集成,具有可从故障中快速恢复和动态扩展任务的能力。

  2. 角色

    A. 客户端(Client):代码由客户端获取并做转换,之后提交给JobManger;

    B. JobManger:对作业进行调度,将任务分发给TaskManger;

    C. TaskManger:干活的,进行数据的处理操作。

  3. 部署模式

    A. 会话模式:

    B. 单作业模式:

    C. 应用模式:

  4. 运行模式

    A. Standalone模式:Flink自带集群,开发测试环境使用;

    B. Yarn模式:计算资源统一由Hadoop YARN管理,生产环境使用;

    C. K8s模式:

    D. 历史服务器

  5. 架构核心概念

    A. 并行度(Parallelism):

    B. 算子链(Operator Chain):

    C. 任务槽(Task slots):

 

二、DataStream API

  1. 窗口(Window)

    A. 概念:是将无限数据流切割成有限的‘数据块’进行处理,窗口是在开始时间数据到达时才创建,当到达结束时间时就会对收集的数据进行处理并关闭,可按键分区(Keyed)处理;

    B. 窗口的分类

      按度量方式可分为:时间窗口和计数窗口;

      按分配数据方式可分为:

        滚动窗口(Tumbling Windows):窗口之间没有重叠,也没有间隔,是连续的;

        滑动窗口(Sliding Windows):大小是固定的,但窗口之间不是首尾相接的;

        会话窗口(Session Windows):有会话超时时间,对数据进行分组的;

        全局窗口:全局有效。

    C. 窗口函数:分增量聚合函数(Reduce和Aggregate)和全窗口函数(Process)。

    D. 窗口触发器和移除器:

 

可参考:Flink官方文档

 

posted @ 2024-12-13 20:25  如幻行云  阅读(6)  评论(0编辑  收藏  举报