0

0

Flink学习笔记(1) -- Flink入门介绍

蓮花仙者

蓮花仙者

发布时间:2025-09-11 10:38:12

|

666人浏览过

|

来源于php中文网

原创

目录

1、Flink简介

2、Flink架构图

3、Flink基本组件介绍

4、Flink的流处理与批处理

5、Flink应用场景分析

6、Flink\Storm\SparkStreaming的比较

7、Flink入门案例 – WordCount

8、Flink scala shell代码调试

1、Flink简介

Flink学习笔记(1) -- Flink入门介绍

Flink是一个分布式大数据计算引擎,支持对有限流和无限流进行有状态的计算。它提供了Java API和Scala API,具有高吞吐量和低延迟的特点,支持事件处理和无序处理,提供一次且仅一次的容错担保,自动反压机制,并兼容Hadoop、Storm、HDFS和YARN。

Flink学习笔记(1) -- Flink入门介绍

2、Flink架构图

Flink学习笔记(1) -- Flink入门介绍

Flink的API架构分为多层,底层API更灵活,上层API更便捷。

low level Stateful stream Processing(Core API的底层实现,开发较为复杂) ↓

Core API(DataStream\DataSet API)

Table API

high level

SQL

Flink学习笔记(1) -- Flink入门介绍

3、Flink基本组件介绍

Flink学习笔记(1) -- Flink入门介绍

代码语言:javascript

代码运行次数:0

运行 复制
(1) DataSource指的是数据处理的数据源,可以是HDFS、Kafka、Hive等;
(2) Transformations指的是对数据的处理转换方法;
(3) DataSink指的是数据处理完成后的输出目的地,可以是MySQL、HBase、HBFS等;

4、Flink的流处理与批处理

在处理大数据领域,批处理任务和流处理任务通常被视为两种不同的任务。大数据框架一般设计为只能处理其中一种任务。例如,Storm仅支持流处理任务,而MapReduce和Spark仅支持批处理任务。Spark Streaming是Apache Spark上支持流处理任务的子系统,看似是一个特例,但实际上并非如此——Spark Streaming采用了micro-batch架构,即将输入的数据流分割成细粒度的批次,并为每个批次数据提交一个批处理的Spark任务。因此,Spark Streaming本质上仍然是基于Spark批处理系统对流式数据进行处理,与Storm等完全流式的数据处理方式截然不同。

Flink通过灵活的执行引擎,能够同时支持批处理任务和流处理任务。

在执行引擎层面,流处理系统与批处理系统的主要区别在于节点间的数据传输方式。对于流处理系统,节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,然后立即通过网络传输到下一个节点,由下一个节点继续处理;而对于批处理系统,节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到缓存中,并不会立即通过网络传输到下一个节点,当缓存写满时,才持久化到本地硬盘上,等所有数据处理完成后,才开始将处理后的数据通过网络传输到下一个节点。这两种数据传输模式是两个极端,分别对应流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。Flink的执行引擎采用了一种非常灵活的方式,同时支持这两种数据传输模型。

Flink以固定大小的缓存块为单位进行网络数据传输,用户可以通过设置缓存块的超时值来指定传输时机。如果缓存块的超时值为0,则Flink的数据传输方式类似于流处理系统的标准模型,此时系统可以获得最低的处理延迟;如果缓存块的超时值为无限大,则Flink的数据传输方式类似于批处理系统的标准模型,此时系统可以获得最高的吞吐量;同时,缓存块的超时值也可以设置为0到无限大之间的任意值。缓存块的超时阈值越小,Flink流处理执行引擎的数据处理延迟就越低,但吞吐量也会降低,反之亦然。通过调整缓存块的超时阈值,用户可以根据需求灵活地权衡系统延迟和吞吐量。

Flink学习笔记(1) -- Flink入门介绍

5、Flink应用场景分析

Ⅰ、优化电商网站的实时搜索结果

Ⅱ、阿里巴巴的所有基础设施团队使用flink实时更新产品细节和库存信息(Blink)

Ⅲ、针对数据分析团队提供实时流处理服务

Ⅳ、通过flink数据分析平台提供实时数据分析服务,及时发现问题

PHP 网络编程技术与实例(曹衍龙)
PHP 网络编程技术与实例(曹衍龙)

PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍

下载

Ⅴ、网络/传感器检测和错误检测

Ⅵ、Bouygues电信公司,是法国最大的电信供应商之一,使用flink监控其有线和无线网络,实现快速故障响应

Ⅶ、商业智能分析ETL

Ⅷ、Zalando使用flink转换数据以便于加载到数据仓库,将复杂的转换操作转化为相对简单的并确保分析终端用户可以更快的访问数据(实时ETL)

6、Flink\Storm\SparkStreaming的比较

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

选择实时框架时需要考虑以下几点:

1:是否需要对流数据进行状态管理;

2:是否有对At-least-once或Exactly-once消息投递模式的特殊要求;

3:对于小型独立项目,并且需要低延迟的场景,建议使用Storm;

4:如果你的项目已经使用了Spark,并且秒级别的实时处理可以满足需求,建议使用Spark Streaming;

5:要求消息投递语义为Exactly Once的场景;数据量较大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用Flink。

7、Flink入门案例 – WordCount

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

Flink WordCount 实时处理 Java版本代码:

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

Flink WordCount 实时处理 Scala版本代码:

Flink学习笔记(1) -- Flink入门介绍

Flink WordCount 批处理 Java版本代码:

Flink学习笔记(1) -- Flink入门介绍

Flink WordCount 批处理 Scala版本代码:

Flink学习笔记(1) -- Flink入门介绍

Flink学习笔记(1) -- Flink入门介绍

8、Flink scala shell代码调试

对于初学者,开发时容易出错,如果每次都打包进行调试,比较麻烦,并且也不好定位问题,可以在scala shell命令行下进行调试;scala shell方式支持流处理和批处理。当启动shell命令行后,两个不同的ExecutionEnvironments会被自动创建。使用senv(Stream)和benv(Batch)分别处理流处理和批处理程序(类似于spark-shell中的sc变量)。

bin/start-scala-shell.sh [local|remote|yarn] [options]

Flink学习笔记(1) -- Flink入门介绍

如果需要深入学习,可以继续阅读剩下的章节,总共有八章节。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

841

2023.06.15

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

742

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

738

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

397

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

399

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

446

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

430

2023.08.02

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

16926

2023.08.03

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Excel 教程
Excel 教程

共162课时 | 12.6万人学习

PHP基础入门课程
PHP基础入门课程

共33课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号