当前位置: 首页 > news >正文

Flink笔记

下面是你提供的文字整理后的结果:

1. Flink是一个针对流数据和批数据的分布式处理引擎,同时支持原生流处理的开源框架。
   - 延迟低(毫秒级),且能够保证消息传输不丢失不重复。
   - 具有非常高的吞吐(每秒千万级)。
   - 支持原生流处理。
   - 容错性高,基于checkpoint机制。
   - 处理模型:单条事件处理;Spark Streaming是一个事件窗口内的所有事件。
   - 部署相对简单,只依赖JRE环境。
   - 应用场景:实时监控(用户行为预警);实时报表(双11直播大屏);实时个性化推荐;数据仓库(实时数据清洗、归并)。

2. 流计算与批计算对比:
   - 流式计算实时、低延迟,批量计算非实时、高延迟。
   - 流式计算一般针对动态、无边界的数据,批量计算一般针对静态数据。
   - 流式计算任务是持续运行的,批量计算任务一次性完成。

3. Flink的核心特性:
   - 事件时间:Flink应用程序需要从原始数据中解析出事件时间,并设置给Flink,用于时间窗口计算。
   - 灵活的窗口操作。
   - 可以处理超出主内存大小限制的数据,减少垃圾收集开销。
   - 对象序列化二进制存储。

4. Flink的部署:
   - Application:每个Application对应一个Runtime,一个Application中可以包含多个Job。
   - JobManager:每个集群至少有一个,负责管理整个集群的计算资源。
   - JobManager向ResourceManager申请slot资源。
   - TaskManager:每个集群有多个TaskManager,TaskManager通过心跳与JobManager通信,每个TaskManager可以有多个Task slot。
   - 单个Slot可以用于一个或多个Task执行,但相同的Task不能在一个Slot中运行。
   - Client:执行main方法解析JobGraph对象,并提交给JobManager。

5. Flink的API:
   - 开源实现的MapReduce模型,包含三个阶段:Map、Shuffle、Reduce。
   - 水位线:用于处理实时数据中的乱序问题,保证在一个特定事件后必须触发窗口进行计算。
   - 窗口的触发时机是窗口截至时间<=当前的Watermark。
   - 其他特性包括:window Evictor(数据清除器),OutputTag(分流标签),AsyncFunction(异步查询补充数据)。

6. 状态管理:
   - Flink中的KeyBy算子根据指定的Key将数据流分区。
   - 默认的checkpoint interval为500ms。
   - savepoint用于手动触发保存状态数据,用于发版等情况,与checkpoint保存的内容相同。

7. Table API:
   - 表的数据存储在catalog中,临时表存储在内存中,永久表存储在外部catalog中,比如Hive Catalog。

8. 其他概念和接口:
   - RichParallelSourceFunction:并发数据源。
   - CheckpointListener:通知checkpoint完成。
   - CheckpointedFunction:定义快照实现。
   - ResultTypeQueryable接口:通过输入格式和功能明确告知API返回类型。
   - 数据源mq会进行数据分区,在多个Flink并发实例的情况下,并发消费以提高效率。

9. 关于消费者和生产者的速度和消息堆积的问题:
   - 消费者的平均速度一定是大于生产者的平均速度,否则会造成消息堆积,mq通过offset来控制消费偏移量,但是还会保存一段时间的历史数据用来消息回溯和查询,一般是7天,保存数据的时候starRocks可以通过排序键做幂等                                                                                                       -算子本身不需要实现CheckpointedFunction的snapshotState方法就能实现State的保存,这是由Flink本身的机制实现的,snapshotState方法会在每次正常checkpoint的时候调用                               -Flink本身支持starRocks,并且实现了snapshotState,功能是把缓存的待写入数据库的数据刷盘到starRocks,这样会有问题,就是每次checkpoint的时候都会把数据强制刷盘到数据库,这是一个同步处理,可能会造成写库很慢,消息堆积

http://www.lryc.cn/news/125416.html

相关文章:

  • 深度学习在MRI运动校正中的应用综述
  • 内存不足V4L2 申请DMC缓存报错问题
  • 论文笔记--Llama 2: Open Foundation and Fine-Tuned Chat Models
  • 客达天下项目案例
  • 系统设计类题目汇总二
  • MySQL和Redis如何保证数据一致性
  • Go学习第九天
  • kafka集成篇
  • go-安装部署
  • vue项目的实用性总结
  • IOC容器
  • 若依框架浅浅介绍
  • echarts 柱状图-折线图-饼图的基础使用
  • mac电脑 node 基本操作命令
  • Hlang社区项目说明
  • RTC实验
  • C#多线程报错:The destination thread no longer exists.
  • 使用 Visual Studio GoogleTest编写 C/C++ 单元测试——入门篇
  • Linux下TA_Lib安装失败的问题处理
  • egg.js企业级web框架
  • 小说网站第二章-关于文章的上传的实现
  • Java面试题01
  • 6.3 社会工程学攻击
  • typeScript 之 Map
  • Apache Doris 入门教程29:文件管理器
  • 【佳佳怪文献分享】MVFusion: 利用语义对齐的多视角 3D 物体检测雷达和相机融合
  • word 应用 打不开 显示一直是正在启动中
  • Flink-----Yarn应用模式作业提交流程
  • Python学习笔记_基础篇(五)_数据类型之字典
  • 【第三阶段】kotlin语言的安全调用操作符