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定义的表上执行。

相关推荐
莫彩3 小时前
Mapreduce 工业界批式计算经验汇总(下)
大数据·mapreduce
爱吃面的猫7 小时前
大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
大数据·hadoop·分布式
Fireworkitte7 小时前
安装 Elasticsearch IK 分词器
大数据·elasticsearch
ywyy67989 小时前
短剧系统开发定制全流程解析:从需求分析到上线的专业指南
大数据·需求分析·短剧·推客系统·推客小程序·短剧系统开发·海外短剧系统开发
暗影八度10 小时前
Spark流水线数据质量检查组件
大数据·分布式·spark
白鲸开源11 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据
海豚调度11 小时前
Linux 基金会报告解读:开源 AI 重塑经济格局,有人失业,有人涨薪!
大数据·人工智能·ai·开源
白鲸开源11 小时前
DolphinScheduler+Sqoop 入门避坑:一文搞定数据同步常见异常
大数据
Edingbrugh.南空11 小时前
Flink ClickHouse 连接器数据读取源码深度解析
java·clickhouse·flink
学术小八12 小时前
第二届云计算与大数据国际学术会议(ICCBD 2025)
大数据·云计算