当前位置: 首页 > article >正文

Flink基础概念

1. 什么是 Flink?

Apache Flink 是一个分布式计算框架,专注于流处理(Stream Processing),也支持批处理任务(Batch Processing)。

其主要特点包括:

  • 流优先设计: 认为批处理是流处理的一个特例。
  • 高吞吐量和低延迟: 可以在高数据量下高效运行,并提供实时响应。
  • 分布式架构: 天然支持分布式计算,支持多种部署模式,如独立部署、YARN 和 Kubernetes。

2. Flink 与 Spark 和 Kafka Streams 的差异

特性FlinkSparkKafka Streams
处理模式主要支持流处理,同时支持批处理主要支持批处理,扩展支持流处理专注于流处理
延迟低延迟,支持亚秒级响应延迟相对较高(Micro-batch)低延迟,实时性好
事件时间支持强大的事件时间和乱序处理支持基本支持,但较为有限支持事件时间,但功能较少
容错机制Checkpoint 和状态一致性保证依赖于 RDD 的容错机制Kafka 自身提供容错
使用场景实时分析、复杂流式计算、多维度数据离线批处理,适合数据管道简单实时流处理和转换

3. Flink 核心概念

流式和批处理

  • 流处理(Stream Processing): 持续处理实时数据流,是 Flink 的核心功能。流可以是无限(实时流,如 Kafka 数据)或有限(批流,如文件流)。
  • 批处理(Batch Processing): 一次性处理静态数据集,Flink 将其视为特殊的“有限流”。

事件时间与乱序处理

  • 事件时间(Event Time): 数据生成时的时间戳,与数据的实际发生时间一致。
  • 处理时间(Processing Time): 系统接收数据的时间,容易受延迟影响。
  • 水位线(Watermark): 用于指示事件时间的进展,帮助框架处理乱序事件。

窗口(Window)

  • 将流数据分割为有限片段的逻辑单元。
    • 滚动窗口(Tumbling Window): 不重叠的固定间隔窗口。
    • 滑动窗口(Sliding Window): 重叠窗口,按滑动步长移动。
    • 会话窗口(Session Window): 根据数据活动间隔动态生成窗口。

状态管理

  • Flink 作业可以保存状态,用于处理复杂流式任务:
    • Keyed State: 针对 Keyed Stream,每个 Key 独立维护状态。
    • Operator State: 针对操作符维护的全局状态。

容错机制

  • Checkpoint: 定期保存作业状态,保证在故障时从最近的状态恢复。
  • Savepoint: 手动触发的任务快照,用于任务升级或迁移。

4. Flink 常用术语

术语含义
Job一个完整的任务逻辑,包含数据源、处理逻辑和输出逻辑。
TaskJob 中的一个逻辑操作单位(比如 Map、Reduce)。
Source数据来源,比如 Kafka、文件、Socket。
Sink数据的输出,比如文件、数据库、Kafka 等。
Transformation数据转换操作,比如 Map、FlatMap、KeyBy 等。
Parallelism作业并行度,决定了一个操作符的实例数(如 Map 的多个并行任务)。
Checkpoint用于恢复作业的状态一致性快照,支持精确一次(Exactly Once)语义。

理解这些概念的意义

  • 流式和批处理: 帮助选择合适的工具。Flink 强在流处理,但批处理性能也很出色。
  • 事件时间与水位线: 是 Flink 处理乱序事件数据的核心,尤其在 IoT 和实时分析场景中。
  • 状态管理: 为复杂任务提供灵活支持,适合如实时计数、聚合等需求。
  • 容错机制: 保证作业在分布式环境中的高可用性,适应企业级生产环境。


http://www.kler.cn/a/501963.html

相关文章:

  • 图形验证码是怎样保护登录安全的?
  • Oracle FLOOR函数的用法
  • Maven 在尝试连接到 Maven Central 仓库超时的解决方案和排查步骤
  • 使用Docker模拟PX4固件的无人机用于辅助地面站开发
  • 《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题
  • 基于DFT与IIR-FIR滤波器的音频分析与噪声处理
  • 解码 Web3:区块链如何编织去中心化之网
  • 深入解析 C++ 类型转换
  • Go语言的计算机基础
  • 创建 WordPress 插件(第一部分):添加管理页面
  • NBC模型【机器学习】
  • 【日常小记】Ubuntu启动后无图形界面且网络配置消失
  • SpringBoot源码解析(七):应用上下文结构体系
  • 电商项目-基于ElasticSearch实现商品搜索功能(三)
  • Redis常见
  • apache age:22023,42883,等报错信息
  • spring mvc源码学习笔记之十一
  • EF Core一对一和多对多
  • AI的崛起:它将如何改变IT行业的职业景象?
  • 多模态论文笔记——CLIP
  • C#上位机通过CAN总线发送bin文件
  • 高阶C语言|探索指针的根源之目(进阶指针)
  • 云原生周刊:Prometheus 3.0 正式发布
  • 检测模型安全的更高级的方法
  • 例子:WeTextProcessing,如何查看现在已安装的这个模块的版本号呢?查看虚拟环境中模块的版本
  • 征服Windows版nginx(2)