Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速计算。
Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布、数据通信以及容错机制等功能。Flink 是一个开源的分布式流式处理框架:
①提供准确的结果,甚至在出现无序或者延迟加载的数据的情况下。
②它是状态化的容错的,同时在维护一次完整的的应用状态时,能无缝修复错误。
③大规模运行,在上千个节点运行时有很好的吞吐量和低延迟。
Flink 优势
Apache Flink 为用户提供了更强大的计算能力和更易用的编程接口
1、批流统一
Runtime 和 SQL 层批流统一,提供高吞吐低延时计算能力和更强大的SQL支持。
2、生态兼容
与 Hadoop Yarn / Apache Mesos / Kubernetes 集成,并且支持单机模式运行。
3、性能卓越
性能卓越的批处理与流处理支持。
4、规模计算
作业可被分解成上千个任务,分布在集群中并发执行。
Flink的应用场景:
1、Data Pipeline
Data Pipeline 的核心场景类似于数据搬运并在搬运的过程中进行部分数据清洗或者处理,而整个业务架构图的左边是 Periodic ETL,它提供了流式 ETL 或者实时 ETL,能够订阅消息队列的消息并进行处理,清洗完成后实时写入到下游的 Database 或 File system 中。
2、Data Analytics
包含 Batch Analytics和 Streaming Analytics。Batch Analysis 就是传统意义上使用类似于 Map Reduce、Hive、Spark Batch 等,对作业进行分析、处理、生成离线报表,Streaming Analytics 使用流式分析引擎如 Storm,Flink 实时处理分析数据,应用较多的场景如实时大屏、实时报表。
3、Data Driven
从某种程度上来说,所有的实时的数据处理或者是流式数据处理都是属于 Data Driven,流计算本质上是 Data Driven 计算。应用较多的如风控系统,当风控系统需要处理各种各样复杂的规则时,Data Driven 就会把处理的规则和逻辑写入到 Datastream 的 API 或者是 ProcessFunction 的 API 中,然后将逻辑抽象到整个 Flink 引擎中,当外面的数据流或者是事件进入就会触发相应的规则,这就是 Data Driven 的原理。在触发某些规则后,Data Driven 会进行处理或者是进行预警,这些预警会发到下游产生业务通知,这是 Data Driven 的应用场景,Data Driven 在应用上更多应用于复杂事件的处理。
Flink是一个Stateful Computations Over Streams,即数据流上的有状态的计算。这里面有两个关键字,一个是Streams,Flink认为有界数据集是无界数据流的一种特例,所以说有界数据集也是一种数据流,事件流也是一种数据流。Everything is streams,即Flink可以用来处理任何的数据,可以支持批处理、流处理、AI、MachineLearning等等。
Flink系统架构
Flink中有两个核心API:用于处理有限数据集DataSet API(通常称为批处理)和用于处理无界数据流的DataStream API(通常称为实时流处理)。Flink的核心是DistributedStreaming Dataflow引擎,它用来执行dataflow程序。Flink的核心运行引擎可以看作是Streaming Dataflow引擎,DataSetAPI和DataStreamAPI都可以通过该引擎创建运行时程序。
在核心API的基础上,Flink还绑定了用于特定于领域的库和API,目前是用于机器学习的FlinkML, 用于图处理的Gelly和用于sql的操作的Table API。从部署模式上讲,Flink支持local模式、集群模式(standalone集群或者Yarn集群)、Cloud端部署。加米谷大数据培训。