【Flink】Flink概念、应用场景、特点以及与Spark的对比

一、概述

1、什么是Flink?

        Flink 是一个流式大数据处理引擎,执行的是数据流上的有状态计算。

2、流处理和批处理

        对于具体应用来说,有些场景数据是一个一个来的,是一组有序的数据序列,我们把它叫作“数据流”;而有些场景的数据,本身就是一批同时到来,是一个有限的数据集,这就是批量数据(有时也直接叫数据集)。

二、Flink的应用场景

1. 电商和市场营销
举例:实时数据报表、广告投放、实时推荐
2. 物联网( IOT
举例:传感器实时数据采集和显示、实时报警,交通运输业
3. 物流配送和服务业
举例:订单状态实时更新、通知信息推送
4. 银行和金融业
举例:实时结算和通知推送,实时检测异常行为

三、流式数据处理的发展

传统事务处理模型 ——>  Lambda架构 ——> Flink

【Flink】Flink概念、应用场景、特点以及与Spark的对比_第1张图片

【Flink】Flink概念、应用场景、特点以及与Spark的对比_第2张图片

【Flink】Flink概念、应用场景、特点以及与Spark的对比_第3张图片

【Flink】Flink概念、应用场景、特点以及与Spark的对比_第4张图片

Lambda架构 

数据到达之后,两层处理双管齐下,一方面由流处理器进行实时处理,另一方面写入批处理存储空间,等待批处理器批量计算。流处理器快速计算出一个近似结果,并将它们写入“流处理表”中。而批处理器会定期处理存储中的数据,将准确的结果写入批处理表,并从快速表中删除不准确的结果。最终,应用程序会合并快速表和批处理表中的结果,并展示出来。

四、Flink 的核心特性

  • 高吞吐和低延迟。每秒处理数百万个事件,毫秒级延迟。
  • 结果的准确性Flink 提供了事件时间(event-time)和处理时间(processing-time) 语义。对于乱序事件流,事件时间语义仍然能提供一致且准确的结果。
  • 精确一次(exactly-once)的状态一致性保证。
  • 可以连接到最常用的存储系统,如 Apache KafkaApache CassandraElasticsearch、 JDBC、Kinesis 和(分布式)文件系统,如 HDFS S3
  • 高可用。本身高可用的设置,加上与 K8sYARN Mesos 的紧密集成,再加上从故障中快速恢复和动态扩展任务的能力,Flink 能做到以极少的停机时间 7×24 全天候运行。
  • 能够更新应用程序代码并将作业(jobs)迁移到不同的 Flink 集群,而不会丢失应用程序的状态。

五、Flink与Spark的对比

1、数据处理模式

Spark 以批处理为根本,并尝试在批处理之上支持流计算。但Spark Streaming 其实并不是真正意义上的“流”处理,而是“微批次”(micro-batching)处理。

Flink 则认为,流处理才是最基本的操作,批处理也可以统一为流处理。在 Flink 的世界观中,万物皆流,实时数据是标准的、没有界限的流,而离线数据则是有界限的流。

2、数据类型

Spark 底层数据模型是弹性分布式数据集( RDD ), Spark Streaming 进行微批处理的底层
接口 DStream。
Flink 的基本数据模型是数据流( DataFlow ),以及事件( Event )序列。
3、运行架构
Spark 做批计算,需 要将任务对应的 DAG 划分阶段( Stage ),一个完成后经过 shuffle 再进行下一阶段的计算。而 Flink 是标准的流式执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

 总结:如果是批处理,可选择Spark。如果是实时流处理,则选择Flink。原因如下:

Flink 的延迟是毫秒级别,而 Spark Streaming 的延迟是秒级延迟。
Flink 提供了严格的精确一次性语义保证。
Flink 的窗口 API 更加灵活、语义更丰富。
Flink 提供事件时间语义,可以正确处理延迟数据。
Flink 提供了更加灵活的对状态编程的 API

 

 

你可能感兴趣的:(Flink,大数据,分布式,big,data,flink)