Flink基础教程([美]埃伦•弗里德曼[希]科斯塔斯•宙马斯)

书: https://pan.baidu.com/s/1jDVnfhmGRwu5jeEuV63Kcg?pwd=bmyj
笔记如下:

  1. Flink核心架构:基于事件驱动的分布式流处理引擎,采用JobManager(协调者)与TaskManager(执行者)分离设计,支持水平扩展。
  2. 流批统一模型:通过DataStream API实现流(Streaming)与批(Batch)处理的代码复用,底层自动优化执行计划。
  3. 时间语义
  • 事件时间(Event Time):基于数据自带时间戳处理乱序事件(如日志时间)。
  • 处理时间(Processing Time):依赖系统时钟,低延迟但结果不可重现。
  1. 状态管理机制
  • Keyed State:与键(Key)绑定的状态(如ValueState/ListState),适用于KeyBy后的操作。
  • Operator State:算子级状态(如Kafka消费偏移量),支持List/Union模式。
  1. 容错与一致性
  • Checkpoint:周期性快照(Snapshot)持久化状态,默认异步存储至HDFS/S3。
  • 精确一次(Exactly-Once):结合Kafka事务实现端到端一致性。
  1. 窗口计算
  • 滚动窗口(Tumbling):固定大小、无重叠(如每分钟统计)。
  • 滑动窗口(Sliding):固定大小、可重叠(如每10秒统计近1分钟数据)。
  • 会话窗口(Session):基于事件间隔动态划分(如用户活跃会话)。
  1. 水位线(Watermark)
  • 解决乱序数据问题,通过BoundedOutOfOrderness或自定义生成器。
  • 触发窗口计算的逻辑时钟,延迟容忍度可配置。
  1. 复杂事件处理(CEP)
  • Pattern API定义事件模式(如“连续登录失败3次”)。
  • 支持Within时间约束,检测超时事件。
  1. Table API & SQL
  • 声明式编程,兼容标准SQL(如GROUP BY/JOIN)。
  • 与DataStream互转:tableEnv.toDataStream/tableEnv.fromDataStream
  1. Connector生态系统
    • Source:Kafka、Socket、FileSystem。
    • Sink:JDBC、Elasticsearch、Redis、Kafka。
  2. 资源与并行度
    • Task Slot:TaskManager的资源单元,共享网络/内存。
    • 并行度:根据数据量调整(env.setParallelism(4)),影响吞吐与延迟。
  3. 反压(Backpressure)
    • 基于信用(Credit-Based)的流量控制,自动减缓上游发送速率。
    • 通过监控outPoolUsage指标识别反压源头。
  4. 部署模式对比
    • Session模式:共享集群,适合短作业测试。
    • Per-Job模式:独享集群,生产环境推荐。
    • Application模式:K8s原生支持,容器化部署。
  5. 性能调优
    • 序列化:使用Kryo(env.getConfig().enableForceKryo())减少序列化开销。
    • 网络缓冲区:调整taskmanager.network.memory.fraction避免瓶颈。
    • 状态后端:RocksDBStateBackend适合超大状态,但吞吐较低。
  6. 监控与诊断
    • Metrics:通过Prometheus采集numRecordsIn/latency等指标。
    • 日志:定位Checkpoint失败或Task异常原因。
  7. 状态后端选型
    • MemoryStateBackend:仅测试用,宕机丢失状态。
    • FsStateBackend:生产常用,依赖分布式文件系统。
    • RocksDBStateBackend:超大规模状态,支持增量Checkpoint。
  8. Savepoint与版本升级
    • 手动触发Savepoint(flink savepoint <jobId>),用于作业暂停/恢复。
    • 版本间状态兼容性需验证(如Flink 1.13→1.15)。
  9. Flink与AI集成
    • ML Pipeline:在线模型推理(如TensorFlow SavedModel加载)。
    • Stateful Functions:结合有状态函数处理复杂逻辑。
  10. 典型场景案例
    • 实时风控:CEP检测欺诈行为,窗口聚合统计。
    • IoT数据处理:设备状态监控,异常告警。
    • 实时数仓:Kafka→Flink→Hudi,构建流式ETL。
  11. 未来演进方向
    • 统一批流存储:Apache Paimon(原Flink Table Store)集成。
    • Serverless化:Flink on K8s的自动扩缩容(如Flink Kubernetes Operator)。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注