| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Flink基本概念(一) -> 正文阅读 |
|
[大数据]Flink基本概念(一) |
《Flink原理、实战与性能优化》 基于有状态计算(好处:不需要将原始数据重新从外部存储中拿出来) 周期性的通过分布式快照技术checkpoints实现状态的持久化维护 优势: 1、同时支持高吞吐、低延迟、高性能 2、支持事件时间(event time)概念:即使乱序时间到达flink也能根据事件产生的时间来处理 3、支持有状态计算:把中间结果数据保存在内存或者文件系统中,不用再次从头计算 4、支持高度灵活的窗口操作:通过窗口的方式对流数据进行一定范围的聚合计算。 flink对窗口划分为基于time、count、session,以及Data-driven等类型的窗口操作 5、基于轻量级分布式快照(snapshot)实现的容错 Flink将大型计算任务的流程拆解成小的计算过程,将task分布到并行节点上进行处理。通过checkpoints将执行过程中的状态信息进行持久化存储,出现异常的时候,flink能够从checkpoints中进行任务的自动恢复,确保数据的一致性。 6、基于JVM实现独立的内存管理 7、Save Points(保存点): 重启后可以直接从之前保存在存储介质上的savepoints来恢复 Checkpoints与savepoints的区别原文:https://blog.csdn.net/nazeniwaresakini/article/details/104649508/ Checkponits是在taskmanager中存储的,而savepoints是在jobmanager中存储的。
savepoints面向用户,完全根据用户的需要触发与清理。
Checkpoints与savepoints存储文件的位置都是在fink配置文件中的conf/flink-conf.yaml的state.checkpoints.dir与state.savepoints.dir设置的。 Flink基本架构基础组件栈 API&Libaraies层、Runtime核心层以及物理部署层 基础架构 主要两个组件,JobManager(Master)和TaskManager(Worker),通信借助于AkkaFramework。
可以通过cli或者前端网页提交任务,或者在应用程序中指定JobManager的RPC网络端口构建ExecutionEnvironment提交Flink应用。
JobManager负责整个Flink集群任务的调度以及资源的管理,从客户端中获取提交的应用,根据TaskManager上TaskSlots的使用情况,为提交的应用分配相应的taskSlots资源并命令TaskManager启动从客户端获取的应用。JobManager是整个集群的Master节点,整个集群只有一个活跃的JobManager,负责整个集群的任务管理和资源管理。 JobManager和TaskManager通过Actor System进行通信,JobManager获取任务执行的情况通过Actor System将应用的执行情况发送给客户端。 在任务执行过程中,JobManager会触发checkpoints操作,每个TaskManager节点在收到checkpoint指令后,完成checkpoint操作,所有的checkpoint协调过程都是早JobManager在这个过程中完成的。 任务完成后,flink会将任务执行的信息反馈给客户端,并释放掉TaskManager中的资源以供下一次提交任务使用。
配置文件中的taskmanager.numberOfTaskSlots决定了每个TaskManager能够启动多少个任务槽。TaskManager相当于整个集群的slave节点,负责具体的任务执行和对应任务在每个节点上的资源申请与管理。 1、客户端通过提交jar包到Jobmanager,Jobmanager根据已经注册在Jobmanager中的TaskManager的资源情况,将任务分配给有资源的TaskManager,启动并运行任务。 2、TaskManager从Jobmanager接受需要部署的任务,使用slot资源启动task,建立数据接入的网络连接,接受数据并开始数据处理 各个TaskManager之间的数据交互都是通过数据流的方式进行的。 DataStream与DataSet(无界流与有界流)数据集类型: 1、有界数据集:有时间边界,处理过程中数据一定会在某个时间范围内起始和结束。对有界数据集的数据处理方式被称为批计算。 2、无界数据集:数据从开始生成就一直持续不断地产生新的数据。 3、统一数据处理:有界和无界数据集可以相互转换。Eg:无界切成有界例子。将系统产生的数据接入到存储系统,按照年或月进行切割,切分成不同时间长度的有界数据集。 Flink把有界数据转换成无界数据统一进行流式,最终将批处理和流处理统一在一套流式引擎中。 DataStream转换操作分类:Single-DataStream、Multi-DataStream、物理分区
1.1 Map 1.2 FlatMap 1.3 Filter 1.4 KeyBy 1.5 Reduce 1.6 Aggregations 2、Multi-DataStream 2.1 Union 2.2 Connect 、Comap、CoFlatMap[DataStream -> DataStream] 2.3 Split 2.4 Select 2.5 Iterate 迭代计算 3、物理分区操作 3.1 随机分区 3.2 Roundrobin Partitioning 轮询调度 datastream.rebalance(); 3.3 Rescaling Partitioning 重新调节(发生网络传输) datastream.rescale (); 3.4 广播操作(Broadcasting) 小表时候使用广播 3.5自定义分区 4、DataSinks数据输出 四、时间概念与Watermark 4.1时间概念模型 时间(时间产生的位置不同):事件生成时间、事件接入时间、事件处理时间 处理时间:数据在操作算子计算过程中获取到的所有主机时间 5.3 状态管理器5.3.1 MemoryStateBackend(flink默认使用) 存储在内存中、使用MAX_MEM_STATE_SIZ指定每个状态最大内存的大小 聚合类算子的状态会存储在JonManager内存中,如果算子多了会对内存有一定压力 缺点:内存满了之后容易丢失数据,不建议生产使用 MemoryStateBackend适用于本地开发调试,或者job的状态比较小的情况下.或者无状态的情况.MemoryStateBackend 最适合小状态的应用场景。例如 Kafka consumer,或者一次仅一记录的函数 (Map, FlatMap,或 Filter)性能是最高的 5.3.2 FsStateBackend:基于文件系统(本地文件系统/HDFS分布式文件系统)的一种状态管理器 new FsStateBackend(path,false); --文件系统路径,同步/异步 "hdfs://node151:40010/flink/checkpoint"或者file:///data/flink/checkpoints 适用于以下情景:拥有普通状态、长窗口、是key/Value结构的状态的Job。所有高可用性部署中,性能和memory查不多.当前的状态仍然会先存在 TaskManager 中,所以状态的大小不能超过 TaskManager 的内存? 5.3.3 RocksDBStateBackend:是Flink内置的第三方状态管理器
一个小时的时间窗口
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 10:08:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |