Flink简介

现实世界中,许多系统数据都是作为连续的事件流进行的,比如汽车GPS定位信号、金融交易、手机信号塔与智能手机用户之间的信号交换、网络流量、服务器日志、工业传感器和可穿戴设备的测量等。如果我们能够及时有效地大规模分析这些流数据,那么就能够更好地理解这些系统,并及时地进行分析。

Apache Flink是下一代开源大数据处理引擎。它是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算。可部署在各种集群环境,对各种大小的数据规模进行快速计算。

Flink发展历程

Flink起源于Stratosphere项目,这是2010年至2014年间由三所柏林大学和其他欧洲大学共同开展的一项研究项目。2014年4月,Stratosphere代码的一个分支被捐赠给了Apache软件基金会作为一个孵化项目,其初始提交者由系统的核心开发人员组成。此后不久,许多创始人离开大学,创办了一家名叫Data Artisans的公司,用于将Flink商业化。在孵化期间,为了防止与其他不相关的项目混淆,对项目名称做了更改,选择Flink作为该项目的新名称。


注1:Data Artisans公司于2019年1月被阿里以9000万欧元收购。

注2:在德语中,“Flink”一词的意思是快速或敏捷,它代表该项目所具有的流和批处理程序的风格。因为松鼠速度快、敏捷,所以Flink选择柏林郊外的一种红棕色松鼠作为Logo。在下图中,左图为柏林郊外的红松鼠,右图为Flink的Logo。

项目快速完成孵化,2014年12月,Flink毕业成为Apache软件基金会的顶级项目。

Flink是Apache软件基金会最大的5个大数据项目之一,在全球拥有超过200名开发人员的社区和多个生产安装。作为公认的新一代大数据计算引擎,Flink 已成为阿里、腾讯、滴滴、美团、字节跳动、Netflix、Lyft 等国内外知名公司建设流计算平台的首选!

Apache Flink 1.10.0 于 2020年02月11日正式发布。Flink 1.10 是一个历时非常长、代码变动非常大的版本,也是 Flink 社区迄今为止规模最大的一次版本升级,Flink 1.10 容纳了超过 200 位贡献者对超过 1200 个 issue 的开发实现,包含对 Flink 作业的整体性能及稳定性的显著优化、对原生 Kubernetes 的初步集成以及对 Python 支持(PyFlink)的重大优化。

Flink1.10.0 完美整合了阿里的BLink、支持了YARN模式下的跨Task资源共享,并强化了对Hive的支持。随着 Flink 1.10 版本的发布,Blink 合并的正式完成,Flink 作业的整体性能及稳定性有了显著优化,越来越多的企业开始采用 Flink 用于生产环境。相信 Flink 的整体性能将随着社区发展、生态的完善不断取得新突破。

Flink特性

Flink支持流和批处理、复杂的状态管理、事件时间处理语义,以及对状态的一次一致性保证。此外,Flink可以部署在各种资源提供者(如YARN、Apache Mesos和Kubernetes)上,也可以作为独立集群部署在裸机硬件上。可以将Flink集群配置为高可用的以避免单点故障。

Flink设计用于在任何规模上运行有状态流应用程序。应用程序可能被并行化为数千个任务,这些任务分布在集群中并并行执行。因此,一个应用程序可以利用几乎无限数量的CPU、主内存、磁盘和网络IO。此外,Flink很容易维护非常大的应用程序状态。它的异步和增量检查点算法在保证精确一次性的状态一致性的同时,确保对处理延迟的影响最小。

Apache Flink 为用户提供了更强大的计算能力和更易用的编程接口:

  • 批流统一。Flink在Runtime和SQL层批流统一,提供高吞吐低延时计算能力和更强大的SQL支持。
  • 生态兼容。Flink能与Hadoop Yarn / Apache Mesos / Kubernetes集成,并且支持单机模式运行。
  • 性能卓越。Flink提供了性能卓越的批处理与流处理支持。
  • 规模计算。Flink的作业可被分解成上千个任务,分布在集群中并发执行。

Flink已经被证明可以扩展到数千个内核和TB级的应用程序状态,提供高吞吐量和低延迟,并支持世界上一些要求最高的流处理应用程序。Apache Flink 在 2019 年阿里巴巴双 11 场景中突破实时计算消息处理峰值达到 25 亿条/秒。

Flink程序运行规模:

  • 每天处理数万亿个事件的应用程序
  • 维护多个TB级状态的应用程序
  • 运行在数千个内核上的应用程序

《Spark原理深入与编程实战》