flink 教程 flink复习资料
0
2025-09-11
目录
1、Flink简介
2、Flink架构图
3、Flink基本组件介绍
4、Flink的流处理与批处理
5、Flink应用场景分析
6、Flink\Storm\SparkStreaming的比较
7、Flink入门案例-WordCount
8、Flink scala shell代码调试
1、Flink简介
Flink是一个全面的大数据计算引擎,支持对有限流和无限流进行有状态的计算。它提供了Java API和Scala API,具有高吞吐量和低延迟的特点,支持事件处理和无序处理,提供且仅一次的容错保证,反自动压机制,并兼容Hadoop、Storm、HDFS和YARN。
2、Flink架构图
Flink的API架构分为多层,底层API更灵活,上层API更便捷。底层有状态流处理(核心API的底层实现,开发难度更大)↓
核心API(DataStream\DataSet API)
↓
Table API
高层
SQL
3、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采用了微批架构,即将输入的数据流分割成细粒度的批次,并为每个批次数据提交一个批处理的Spark任务。因此,Spark Streaming本质上仍然是基于Spark批处理系统对流数据式进行处理,与Storm等完全流式的数据处理方式不同。
Flink通过灵活的执行引擎,能够同时支持批处理任务和流处理任务。
在执行引擎方面,流处理系统与批处理系统的主要区别在于节点间的数据传输方式。
对于流处理系统,节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到存储中,然后立即通过网络传输到下一个节点,由下一个节点继续处理;而对于批处理系统,节点间数据传输的标准模型是:当一条数据被处理完成后,序列化到存储中,并不会立即通过网络传输到下一个节点,当缓存写满这时,才持久化到本地硬盘上,等所有数据处理完成后,才开始将处理后的数据通过网络传输到下一个节点。这两种数据传输模式是两种极端,分别对应流处理系统对低延迟的要求和批处理系统对高吞吐量的要求。Flink的执行引擎采用了一种非常灵活的方式,同时支持这两种数据传输模型。
Flink 以固定大小的服务器块为单位进行网络数据传输,用户可以通过设置服务器块的超时值来指定传输时机。如果服务器块的超时值为 0,则 Flink 的数据传输方式构成流处理系统的标准方式模型,此时系统可获得最低的处理延迟;如果服务器块的超时值无限大,则 Flink 的数据传输方式为批次处理系统的标准模型,此时系统可用的吞吐量最高;同时,服务器块的超时值也可以设置为0到无限大之间的任意值。服务器块的超时阈值越小,Flink流处理引擎的数据处理延迟延迟较低,但吞吐量也降低,反之亦然。通过调整服务器块的超时阈值,用户可以根据需求灵活权衡系统的延迟和吞吐量。
5、Flink应用场景分析
一、优化电商网站的实时搜索结果
二、阿里巴巴所有基础设施团队使用flink实时更新产品和库存信息(眨眼)
三、针对数据分析团队提供实时流处理服务
四、细节通过flink数据分析平台提供实时数据分析服务,及时发现问题智能数字人
数字人短视频创作,数字人直播,实时驱动数字人 36 查看详情
五、网络/传感器检测和错误检测
六、Bouygues电信公司,是法国最大的电信供应商之一,利用flink监控其监控和无线网络,实现快速故障响应
七、商业智能分析ETL
Ⅷ、Zalando 使用 flink 转换数据以便加载到数据仓库,将复杂的转换操作转化为相对简单的并确保分析终端用户可以更快的访问数据(实时 ETL)
6、Flink\Storm\SparkStreaming 的比较
选择实时框架时需要考虑以下几点:
1:是否需要对流数据进行状态管理;
2:是否有对At-least-once或Exactly-once消息投延迟模式的特殊要求;
3:对于小型独立项目,并且需要低延迟的场景,建议使用Storm;
4:如果你的项目已经使用了Spark,并且秒级别的实时处理可以满足需求,建议使用Spark Streaming;
5:要求消息投递语义为Exactly Once的场景;数据量增大,要求高吞吐低延迟的场景;需要进行状态管理或窗口统计的场景,建议使用Flink。
7、Flink入门案例 – WordCount
Flink WordCount 实时处理 Java版本代码:
Flink WordCount 实时处理 Scala 版本代码:
Flink WordCount 批处理 Java 版本代码:
Flink WordCount 批处理 Scala 版本代码:
8、Flink scala shell代码调试
对于初学者来说,开发时容易出错,如果每次都打包进行调试,比较麻烦,而且也不好定位问题,可以在scala shell命令行下进行调试;scala shell方式支持流处理和批处理。当启动shell命令行后,两个不同的ExecutionEnvironments会被自动创建。使用senv(Stream)和benv(Batch)分别处理流处理和批处理程序(相当于spark-shell中的sc变量)。
bin/start-scala-shell.sh
如果需要深入学习,可以继续阅读剩余的章节,总共有八个章节。
以上就是Flink学习笔记(1) -- Flink入门介绍的详细内容,更多请关注乐哥常识网其他相关文章! 相关标签: windows mysql javascript word java apache 大数据硬盘 阿里巴巴区别 Java JavaScript scala 批处理架构 全面yarn事件表 hadoopstorm Spark flink hdfs mapreduce etl apache 数据分析 传感器scala