简单介绍一下 Flink

Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。
Flink提供了诸多高抽象层的API以便用户编写分布式任务:

  • DataSet API,
    对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。
  • DataStream
    API,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。
  • Table
    API,对结构化数据进行查询操作,将结构化数据抽象成关系表,并通过类SQL的DSL对关系表进行各种查询操作,支持Java和Scala。

此外,Flink 还针对特定的应用领域提供了领域库,例如: Flink ML,Flink 的机器学习库,提供了机器学习Pipelines API并实现了多种机器学习算法。 Gelly,Flink 的图计算库,提供了图计算的相关API及多种图计算算法实现。

根据官网的介绍,Flink 的特性包含:

  1. 支持高吞吐、低延迟、高性能的流处理 支持带有事件时间的窗口 (Window) 操作 支持有状态计算的 Exactly-once
    语义
  2. 支持高度灵活的窗口 (Window) 操作,
  3. 支持基于 time、count、session 以及 data-driven 的窗口操作
  4. 支持具有 Backpressure 功能的持续流模型
  5. 支持基于轻量级分布式快照(Snapshot)实现的容错 一个运行时同时支持 Batch on Streaming 处理和
    Streaming 处理 Flink 在 JVM 内部实现了自己的内存管理
  6. 支持迭代计算
  7. 支持程序自动优化:避免特定情况下 Shuffle、排序等昂贵操作,中间结果有必要进行缓存
标签: flink、数据流、api、数据抽象、scala、面试
  • 回复
隐藏