20250118 Flink中的延迟执行机制和数据处理的逻辑拓扑结构(向圖)

一. 延迟执行机制

  1. 延迟执行机制

    收起

    java

    复制代码
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    DataStream<String> inputStream = env.fromElements("input1", "input2", "input3");
    DataStream<Integer> outputStream = inputStream.map(str -> str.length()).filter(len -> len > 3);
    • Flink 采用延迟执行(Lazy Evaluation)模式。在程序的main方法执行阶段,只是构建了数据处理的逻辑拓扑,也就是将各个算子(如mapfilter等)添加到一个有向图(Dataflow Graph)中。这个阶段并没有真正的数据加载和处理操作。例如,当你定义一个DataStream并对其进行一系列的转换操作,如:
    • 在这部分代码执行时,mapfilter算子只是被添加到了数据处理的逻辑拓扑结构中,并没有真正开始处理数据。
  2. 执行触发

    • 只有当执行环境(StreamExecutionEnvironmentExecutionEnvironment)的execute()方法被调用时,Flink 才会根据构建好的有向图来真正地执行数据处理流程。这使得 Flink 能够在执行之前对整个数据处理流程进行优化,比如确定算子的执行顺序、并行度等。而且这种执行方式也使得程序在本地执行和在集群执行的切换比较灵活,取决于执行环境的配置。如果是本地执行环境(LocalStreamExecutionEnvironment等),数据处理就会在本地机器上进行;如果是集群执行环境(RemoteStreamExecutionEnvironment等),数据处理就会在集群中的多个节点上分布式地进行。这种机制有助于提高程序的可移植性和灵活性,同时也能够有效地利用计算资源。

二. 逻辑拓扑结构(向圖)

  1. 有向图的基本概念
    • 在 Flink 中,数据处理的逻辑拓扑结构以有向图(Directed Graph)的形式存在。有向图由顶点(Vertices)和边(Edges)组成。在 Flink 的数据处理场景下,顶点代表算子(Operators),比如mapfilterreduce等操作;边代表数据的流向,也就是数据从一个算子流向另一个算子的通道。
    • 例如,假设有一个简单的 Flink 程序,首先从数据源读取数据(可以看作是一个 "数据源算子"),然后进行map操作,再进行filter操作。在这个逻辑拓扑结构的有向图中,就会有三个顶点,分别代表数据源、map算子和filter算子。会有两条边,一条从数据源指向map算子,表示数据从数据源流向map算子;另一条从map算子指向filter算子,表示经过map处理后的数据流向filter算子。
  2. 分层理解
    • 算子层(Vertices)
      • 每个算子都有其特定的功能。以map算子为例,它会对输入的每个数据元素进行转换操作。假设输入的是一个数据流,其中的数据元素是字符串,map算子可能会将每个字符串转换为其长度。filter算子则会根据给定的条件筛选数据元素,例如只保留长度大于某个值的字符串长度数据。这些算子就像流水线上的不同加工站,对数据进行不同的处理。
    • 数据流层(Edges)
      • 数据在算子之间通过数据流进行传递。数据流的方向是由有向图的边来定义的。数据的流动是基于事件驱动的,当有新的数据元素在数据源产生后,它会沿着有向图的边,依次经过各个算子进行处理。例如,在一个实时流处理程序中,数据源不断产生新的数据,这些数据就会按照有向图规定的路径,从一个算子快速地 "流动" 到下一个算子,进行持续不断的处理。
  3. 优势
    • 并行处理规划 :这种有向图结构有助于 Flink 规划并行处理。因为可以清楚地看到数据的流动路径,Flink 可以根据硬件资源和算子的特性,将不同的算子分配到不同的计算节点上并行执行,同时还能保证数据按照正确的顺序在各个节点之间流动。例如,在一个大数据集的处理场景中,如果有多个map算子,Flink 可以将它们分配到多个 CPU 核心或者多个集群节点上,同时处理不同的数据子集,从而提高处理效率。
    • 优化和可视化:逻辑拓扑结构便于 Flink 进行内部优化。例如,它可以对相邻的算子进行合并或者重新排序等操作,以减少数据传输的开销或者提高处理速度。同时,对于开发者来说,通过工具可以将这个逻辑拓扑结构可视化,帮助更好地理解程序的数据处理流程和可能存在的瓶颈。
相关推荐
lizhihai_994 分钟前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
ha_lydms21 分钟前
AnalyticDB分区、分布键性能优化
android·大数据·分布式·性能优化·分布式计算·分区·analyticdb
dingzd9524 分钟前
跨境社媒运营越到后面 越比拼账号的表达稳定性
大数据·人工智能·矩阵·内容营销
嘉子的秃头日记1 小时前
TRO 2026|轮椅也能“猜到”用户想往哪走?
大数据·人工智能·机器学习
2601_957190902 小时前
极致裸眼沉浸!飞行影院重塑文旅游玩新体验
大数据·人工智能·旅游
阿乔外贸日记2 小时前
埃塞俄比亚出口全流程注意事项
大数据·人工智能·智能手机·云计算·汽车
中讯慧通3 小时前
无人机靠什么实时传画面?图传电台传输数据全明细
大数据·机器人·无人机
QYR_113 小时前
2032年全球料斗清洗机市场规模达14.67亿元:制药与食品行业驱动自动化清洗设备需求增长
大数据·市场调研
今日综合3 小时前
激光雷达的机器人市场竞争,谁在“吃透”六个场景?
大数据·机器人
KaMeidebaby3 小时前
卡梅德生物技术快报|噬菌体文库构建实验优化及偶联体系实验数据分析
大数据·人工智能·架构·spark·新浪微博