环境对象

StreamExecutionEnvironment(开发时)

  • 作用域: Main 函数中
  • 开发时的概念,作业开发的入口,数据源接口,生成和转换 DataStream的接口,数据 SInk 的接口,作业配置接口,作业启动执行的入口

    Environment(构建时)

  • 作用域: 起到衔接 “上下” 的作用

  • 作业的名称,并行度,作业编号 job ID,监控的Mertic,容错的配置信息 和IO 等 ,是从 StreamExecutionEnvironment 中抽象出来的 作为运行时刻的上下文信息

    RuntimeContext(运行时)

  • 作用域: UDF

  • RuntimeContext是运行时Task实例级别的感念 (对于每一个Task而言,其本身有更细节的配置信息)

执行环境

image.png

StreamExecutionEnvironment

StreamPlanEnvironment ※

  • StreamGraph (专门用来生成执行计划的)

LocalStreamEnvironment

  • 在单个 JVM 中使用多线程模拟Flink 集群
    • 执行作业的Main 函数生成 Streamgraph,转换成 JobGraph
    • 设置任务运行时配置信息
    • 根据配置信息启动对应的 LocalFlinkMiniCluster
    • 根据配置信息和 miniCluster 生成对应的 MiniClusterClient
    • 通过 MiniClusterClient 提交 JobGraphMiniCluster

RemoteStreamEnvironment

  • 在大规模数据中心部署的 Flink 生成集群的执行环境
    • 执行作业的Main 函数生成 Streamgraph,转换成 JobGraph
    • 设置任务运行时配置信息
    • 提交 JobGraph 到远程的 Flink 集群

ScalaShellStreamEnvironment

  • 在Scala Shell 执行环境 可以在命令行中交互式 Flink 作业
    • 执行作业的Main 函数生成 Streamgraph,转换成 JobGraph
    • 设置任务运行时配置信息
    • 提交 JobGraph 到远程的 Flink 集群

StreamContextEnvironment

  • Cli 命令行或者单元测试时会被用上

ExecutionEnvironment


运行时环境

image.png

Environment

RuntimeEnvironment

  • Task 进行初始化时,把Task运行相关的信息都封装到该对象中
  • 其中不光包含了: 配置信息、运行时的各种服务也会被包装到其中

    SavepointEnvironment

  • Environment 的最小实现,在状态处理器的API中使用


运行时上下文

image.png

image.png

RuntimeContext

  • RuntimeContextFunction运行时的上下文
  • 封装了Function 运行时可能需要的所有信息,让 Function 在运行时能够获取作业级别的信息
  • 比如(并行度相关信息,Task名称,执行配置信息(ExecutionConfig)、State等)

    1.StreamingRuntimeContext

  • 在流计算 UDF 中使用的上下文,用来访问作业信息,状态等

    2.DistributedRuntimeUDFContext

  • 由运行时 UDF 所在的批处理算子创建,在DataSet中创建使用

    3. RuntimeUDFContext

  • 在批处理应用的 UDF 中使用

    4. SavepointRuntimeContext

  • 这个框架支持为检查点和保存点进行操作,包括: 读取、变更、写入等

    5. CepRuntimeContext

  • CEP 复杂事件处理中使用的上下文


  • RichAsyncFunctionIterationRuntimeContext
  • RichAsyncFunctionRuntimeContext
  • IterationRuntimeContext