MAPREDUCE服务 MRS-Flink基本原理:Flink原理

时间:2025-05-19 17:35:57

Flink原理

  • Stream & Transformation & Operator

    用户实现的Flink程序是由Stream和Transformation这两个基本构建块组成。

    1. Stream是一个中间结果数据,而Transformation是一个操作,它对一个或多个输入Stream进行计算处理,输出一个或多个结果Stream。
    2. 当一个Flink程序被执行的时候,它会被映射为Streaming Dataflow。一个Streaming Dataflow是由一组Stream和Transformation Operator组成,它类似于一个DAG图,在启动的时候从一个或多个Source Operator开始,结束于一个或多个Sink Operator。

      图3为一个由Flink程序映射为Streaming Dataflow的示意图。

      图3 Flink DataStream示例

      图3“FlinkKafkaConsumer”是一个Source Operator,Map、KeyBy、TimeWindow、Apply是Transformation Operator,RollingSink是一个Sink Operator。

  • Pipeline Dataflow

    在Flink中,程序是并行和分布式的方式运行。一个Stream可以被分成多个Stream分区(Stream Partitions),一个Operator可以被分成多个Operator Subtask。

    Flink内部有一个优化的功能,根据上下游算子的紧密程度来进行优化。

    • 紧密度低的算子则不能进行优化,而是将每一个Operator Subtask放在不同的线程中独立执行。一个Operator的并行度,等于Operator Subtask的个数,一个Stream的并行度(分区总数)等于生成它的Operator的并行度,如图4所示。
      图4 Operator
    • 紧密度高的算子可以进行优化,优化后可以将多个Operator Subtask串起来组成一个Operator Chain,实际上就是一个执行链,每个执行链会在TaskManager上一个独立的线程中执行,如图5所示。
      图5 Operator chain
      • 图5中上半部分表示的是将Source和Map两个紧密度高的算子优化后串成一个Operator Chain,实际上一个Operator Chain就是一个大的Operator的概念。图中的Operator Chain表示一个Operator,KeyBy表示一个Operator,Sink表示一个Operator,它们通过Stream连接,而每个Operator在运行时对应一个Task,也就是说图中的上半部分有3个Operator对应的是3个Task。
      • 图5中下半部分是上半部分的一个并行版本,对每一个Task都并行化为多个Subtask,这里只是演示了2个并行度,Sink算子是1个并行度。
support.huaweicloud.com/productdesc-mrs/mrs_08_003401.html
提示

您即将访问非华为云网站,请注意账号财产安全