Flink

文章目录

    • 什么是Flink?
    • Flink优点
    • 分层抽象
    • 架构
    • Flink比Spark做的好的地方
    • 最后

本文将简单介绍Flink的概念、优点、架构,以及Flink比Spark做的好的地方

什么是Flink?

借官网的一句话。Apache Flink是一个框架和分布式处理引擎,用于在无边界和有边界的数据流上进行有状态的计算。

首先,Flink和Spark一样,都是分布式的计算框架,用来处理大规模数据;其次,用于在无边界和有边界的数据上计算,有无边界起始就是我们常说的批和流,Flink现在在流处理方面所向披靡,在近来的版本中也一直在推流批一体的东西,有一统流批的趋势;最后,有状态的计算,Flink提供了强大的状态支持,能够很便捷的实现很多复杂需求。

Flink优点

  • 事件驱动,支持事件时间
  • 强大的状态支持
  • 精确一次的保证
  • 分层API:DataSet/DataStream、Table/SQL
  • 检查点。Checkpoint、SavePoint
  • 高吞吐,低延迟

分层抽象

Flink_第1张图片

  • 最底层是process api,用户可以最细粒度的对数据进行操作、状态管理等
  • 再上层是DataStream和DataSet,封装了基本的操作算子,可以完成大部分需求。
  • 再上层是Table API,可以将数据集注册为表,进行处理。
  • 最高层是SQL API,基于SQL进行处理。

架构

Flink_第2张图片

https://ci.apache.org/projects/flink/flink-docs-release-1.12/concepts/flink-architecture.html

Flink也是主从架构。客户端提交任务,JobManager负责管理调度,Task Manager负责干活。

Flink比Spark做的好的地方

  • Flink是真正的流处理,而Spark Streaming是基于微批实现的流。
  • 源码语言。Spark是Scala,Flink是Java,Java用的人还是多点吧。
  • 事件时间的支持。Spark只有批处理时间,Flink提供了ProcessTime、EventTime、IngestTime可选择。
  • 完整的窗口支持。Flink基于状态的加持,在窗口计算这块用起来很舒服。
  • 基于流的SQL处理。流批一体概念的提出可能一统计算框架。

最后

作为Spark的忠粉,每当身边一群不懂Spark的人在狂吹Flink、爆撵Spark时,都很不爽。但是Flink一统流批的趋势是无需争议的,打不过就加入他们。定个小目标,接下来持续输入、输出Flink内容。

你可能感兴趣的:(Flink,Flink)