Flink笔记-基础知识篇

本系列为学习笔记,记录点比较分散,用于记录重要知识点或复习,由于初学,难免存在问题,欢迎讨论指出。后续会在学习过程中不断围绕 WWW(what,how,why)补充改正。

WHAT

  • Flink的基石
    checkpoint:基于Chandy-Lamport,实现分布式一致性快照
    state: 丰富stateAPI
    Time:实现Watermark机制,乱序、迟到容忍
    Window:开箱即用滚动、滑动、会话窗口,灵活自定义窗口
  • APIS
    SQL、DataStream(有界或无界)、DataSet(有界)
  • 扩展库
    CEP、FlinkML、Gelly、Table
    Flink笔记-基础知识篇_第1张图片

HOW

  • source: 基于本地集合的source、基于文件的source、基于网络socket的source、自定义的source(kafka、kinesis streams、rabbitMQ、NiFi etc)
  • Transformation:数据转换操作。Map、FlatMap、KeyBy、Filter、Reduce、Fold、Aggregations、Window、WindowAll、Union、Window join、Split、Select、Project等
  • Sink:接收器,Sink类别有 - 写入文件、打印、写入socket、自定义sink(kafka、rabbitMQ、MySQL、ES、Cassandra、Hadoop FileSystem etc)。
    Flink笔记-基础知识篇_第2张图片

写到这里感觉Flink在数据处理流程上和物联网里的传感器网络有那么一点点的类似(可能是Sink这个词),多Sensor节点负责收集、处理数据,再将数据汇总到Sink节点上供上游使用。

分布式执行

  • Job Client: 任务起点,接受用户代码,创建数据流,将数据流交给Job Manager进一步执行,并负责接收返回结果
  • Jon Manager:协调管理程序,集群中至少要一个master,负责调度task,协调checkpoints和容灾,高可用可多个master(保证一个leader)
  • Task Manager:接收Job Manager接受Task,任务的并行性由可用槽决定,槽中可运行多个线程,同一插槽共享相同JVM(共享TCP和心跳消息),槽间共享CPU,不共享内存,共享Task,不共享Job
    Flink笔记-基础知识篇_第3张图片

WHY

如果你的需求能被满足时:

  • 开源分布式流处理
  • 支持无序或延迟加载的数据
  • 状态化、容错,同时在维护一次完整的应用状态时,能无缝修复错误
  • 大规模运行,支持很好的吞吐量和低延迟
  • 内存管理,Flink在JVM中提供了自己的内存管理,使用散列、索引、缓存和排序有效管理内存
  • 拥有机器学习、图形处理、关系数据处理库

引用

  1. github - (zhisheng): flink-learning.

你可能感兴趣的:(随笔,flink)