Flink实战教程从入门到精通(基础篇)(一)Flink简介

目录

一、Flink

二、谁在用Flink?

三、Flink特点

1、批流统一

2、性能卓越

3、规模计算

4、生态兼容性

5、高容错性

四、Flink介绍

1、无界数据

2、有界数据流

3、有状态流处理

五、Flink的发展历史

六、Flink的核心特点

1、高吞吐和低延迟

2、结果的准确性

3、精确一次的状态一致性保证

4、可以连接到常用的储存系统

5、高可用

七、Flink与SparkStreaming的区别

1、Spark以批处理为根本

​编辑

2、Flink以流处理为根本

3、总结:

八、Flink的应用场景

九、Flink的分层API


Apache Flink 是一个开源的流处理框架,主要用于分布式、高性能、高可用的数据流处理。它支持批处理和流处理,能够处理实时和离线数据。

Flink 是一个强大的流处理框架,适用于实时和离线数据处理,具备低延迟、高吞吐、精确一次语义等优势,广泛应用于实时分析、事件驱动应用等场景。

二、谁在用Flink?

国内知名的企业,比如国内的阿里巴巴、腾讯、华为、滴滴、快手、爱奇艺等。国外的亚马逊等。国内大多数大数据公司开始向Flink进行转型。

三、Flink特点

1、批流统一

同一段代码,可以跑流可以跑批。

同一个sql,可以跑流可以跑批。

2、性能卓越

低延迟高吞吐 :Flink 提供毫秒级延迟高吞吐量 ,适合实时数据处理场景。

3、规模计算

支持水平扩展架构

支持超大状态与增量检查点机制

4、生态兼容性

支持与Yarn集成

支持与Kubernetes(K8s)集成

支持单机模型运行

5、高容错性

故障自动重试

一致性检查点

保证故障场景下精确一次的状态一致性

四、Flink介绍

Flink的官方主页地址:Apache Flink® --- Stateful Computations over Data Streams | Apache Flink

Flink的核心目标,是数据流上的有状态计算。

具体说明:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界的数据流进行有状态的计算。

Flink具体操作流程:

1、无界数据

有定义流的开始,但没有定义流的结束

他们会无休止的产生数据

无界流的数据必须持续处理,即数据被摄入后需要立刻处理。

我们不能等到所有数据都到达再处理,因为输入是无限的

2、有界数据流

有定义流的开始,也有定义流的结束

有界流可以在摄取所有数据后再进行计算

有界流所有数据可以被排序,所以并不需要有序摄取

有界流处理通常被称为批处理

3、有状态流处理

把流处理需要的额外状态保存成一个"状态" ,然后针对这条数据进行处理,并且更新状态 ,这就是所谓的"有状态的流处理"。

五、Flink的发展历史

Flink起源于一个叫作Stratosphere的项目,它是由3所地处柏林的大学和欧洲其他一些大学在2010~2014年共同进行的研究项目,由柏林理工大学的教授沃克尔·马尔科(VolkerMarkl)领衔开发。2014年4月,Stratosphere的代码被复制并捐赠给了Apache软件基金会,Flink就是在此基础上被重新设计出来的。

项目的logo是一只彩色的松鼠。

在德语中,"flink"一词表示"快速、灵巧"。 THE SOFTWARE FOUNDATION APACHE

·2014年8月,Flink第一个版本0.6正式发布,与此同时Fink的几位核心开发者创办DataArtisans公司;

·2014年12月,Flink项目完成孵化

·2015年4月,Flink发布了里程碑式的重要版本0.9.0;

·2019年1月,长期对Flink投入研发的阿里巴巴,以9000万欧元的价格收购了Data Artisans公司;

·2019年8月,阿里巴巴将内部版本Blink开源,合并入Flink1.9.0版本。

六、Flink的核心特点

1、高吞吐和低延迟

每秒处理数百万个事件,毫秒级延迟。事件可以理解为所谓的数据, 该句话意思可以理解为可以每秒处理几百万条数据。

2、结果的准确性

Flink提供了事件时间(event-time) 和**处理时间(processing-time)**语义,对于乱序的事件流,事件时间语义仍然可以提供一致且准确的结果。

3、精确一次的状态一致性保证

4、可以连接到常用的储存系统

Kafka、Hive、JDBC、HDFS、Redis等

5、高可用

本身高可用 的设置,加上K8sYARNMesos 的紧密集成,再加上从故障中快速恢复动态扩展任务的能力,Flink能做到以极少的停机时间7x24小时全天候运行。

七、Flink与SparkStreaming的区别

1、Spark以批处理为根本

Spark需要设置一个批次间隔 ,如果设置为3秒,相当于Spark进行积攒3秒的数据,然后去处理3秒内的数据,微处理数据。

Spark数据模型:Spark采用RDD模型,Spark Streaming 的DStream实际上也是一组组小批数据RDD集合

Spark运行时架构:Spark是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个。

2、Flink以流处理为根本

Flink流式处理数据,来一条则处理一条,没有进行积攒数据 。

Flink数据模型:Flink基本数据模式是数据流,以及事件序列。

Flink运行时架构:Flink是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

3、总结:

|-------|-----------|--------------------|
| | Flink | Spark Streaming |
| 计算模型 | 流式计算 | 微批处理 |
| 时间语义 | 事件时间、处理时间 | 处理时间 |
| 窗口 | 多、灵活 | 少、不灵活(窗口必须是批次的整数倍) |
| 状态 | 有 | 没有 |
| 流式SQL | 有 | 没有 |

八、Flink的应用场景

Flink在国内各个企业中大量使用。一些行业中的典型应用有:

1、电商和市场营销

举例:实时数据报表、I广告投放、实时推荐

2、物联网(IOT)

举例:传感器实时数据采集和显示、实时报警,交通运输业

3、物流配送和服务业

举例:订单状态实时更新、通知信息推送

4、银行和金融业

举例:实时结算和通知推送,实时检测异常行为

  • 实时数据分析:如实时监控、日志分析。

  • 事件驱动应用:如实时推荐、欺诈检测。

  • 数据管道:如数据清洗、转换、聚合。

  • 复杂事件处理:如模式匹配、规则引擎。

九、Flink的分层API

有状态流处理:通过底层API(处理函数),对最原始数据加工处理。底层AP与DataStreaAPI相集成,可以处理复杂的计算。

DataStream API(流处理)DataSet API(批处理) 封装了底层处理函数,提供了通用的模块,比如转换(transformations,包括fatmap等),连接(joins),聚合(aggreations),窗口(windows)操作等。注意:Flink1.12以后,DataStream API已经实现map、真正的流批一体,所以DataSet API已经过时。

Table AP是以表为中心的声明式编程,其中表可能会动态变化。Tabe API遵循关系模型:表有二维数据结构,类似于关系数据库中的表;同时API提供可比较的操作,例如select、project、join、group-by、aggregate等。我们可以在表与 DataStream/Dataset之间无缝切换,以允许程序将 Table API与 DataStream 以及 DataSet 混合使用。

SQL 这一层在语法与表达能力上与 Tahe AP类似,但是是以SOL査询表达式的形式表现程序。SOL抽象与Iable AH交互密切,同时SQL查询可以直接在TableAPI定义的表上执行。

相关推荐
IT小哥哥呀34 分钟前
电池制造行业数字化实施
大数据·制造·智能制造·数字化·mom·电池·信息化
Xi xi xi37 分钟前
苏州唯理科技近期也正式发布了国内首款神经腕带产品
大数据·人工智能·经验分享·科技
yumgpkpm1 小时前
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
大数据·数据库·mysql·华为·oracle·kafka·cloudera
UMI赋能企业2 小时前
制造业流程自动化提升生产力的全面分析
大数据·人工智能
TDengine (老段)3 小时前
TDengine 数学函数 FLOOR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
派可数据BI可视化5 小时前
商业智能BI 浅谈数据孤岛和数据分析的发展
大数据·数据库·数据仓库·信息可视化·数据挖掘·数据分析
jiedaodezhuti5 小时前
Flink性能调优基石:资源配置与内存优化实践
大数据·flink
Lx3526 小时前
Flink窗口机制详解:如何处理无界数据流
大数据
Lx3526 小时前
深入理解Flink的流处理模型
大数据
Lx3527 小时前
Flink vs Spark Streaming:谁更适合你的实时处理需求?
大数据