ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Flink StreamExecutionEnvironment 一些细节&Flink 执行模式

2022-03-19 23:36:31  阅读:358  来源: 互联网

标签:flink StreamExecutionEnvironment Flink 环境 模式 细节 执行 运行


flink 上下文换机一些细节

  Flink 程序可以在 本地环境运行,也可以在集群环境下运行,不同的运算环境,提交的运行过程也不太一样,这就需要运行程序的时候需要获取上下文环境,从而建立起与flink框架的联系,只有获取到上下文环境信息才能将任务分配到不同的taskmanager上运行。

StreamExecutionEnvironment

在编写flink程序的第一步就是创建环境对象,StreamExecutionEnvironment,它是所有flink程序的基础,在代码中创建的执行环境其实是调用这个类的静态方法

1、getExecutionEnvironment

最简单的方式,就是直接调用getExecutionEnvironment方法。它会根据当前运行的上下文直接得到正确的结果:如果程序是独立运行的,就返回一个本地执行环境;如果是创建了jar包,然后从命令行调用它并提交到集群执行,那么就返回集群的执行环境。也就是说,这个方法会根据当前运行的方式,自行决定该返回什么样的运行环境

 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
这种“智能”的方式不需要我们额外做判断,用起来简单高效,是最常用的一种创建执行环境的方式。

 2. createLocalEnvironment

 这个方法返回一个本地执行环境。可以在调用时传入一个参数,指定默认的并行度;如果不传入,则默认并行度就是本地的CPU核心数。 
StreamExecutionEnvironment localEnv  = StreamExecutionEnvironment.createLocalEnvironment();

我们之前在IDEA运行的wordcount实质就是用的这个方式获取的执行环境。wordcount 打包在集群上用的集群的方式运行

3. createRemoteEnvironment

这个方法返回集群执行环境。需要在调用时指定JobManager的主机名和端口号,并指定要在集群中运行的Jar包。

StreamExecutionEnvironment remoteEnv 
      = StreamExecutionEnvironment.createRemoteEnvironment("host", // JobManager主机名
                                                       1234, // JobManager进程端口号
                                                       "path/to/jarFile.jar"// 提交给JobManager的JAR包);

在获取到程序执行环境后,我们还可以对执行环境进行灵活的设置。比如可以全局设置程序的并行度、禁用算子链,还可以定义程序的时间语义、配置容错机制。关于时间语义和容错机制,我们会在后续的章节介绍。

执行模式(Execution Mode)

StreamExecutionEnvironment 通过名称来看这个上下文是做流处理的,但是新版本的已经实现流批一体,通过设置flink运行模式可以实现批处理。可以通过execution mode 来设置flink的运行方式。

流执行模式(STREAMING) 

  1. 这是DataStream API最经典的模式,一般用于需要持续实时处理的无界数据流。默认情况下,程序使用的就是STREAMING执行模式。
  2. 批执行模式(BATCH)专门用于批处理的执行模式, 这种模式下,Flink处理作业的方式类似于MapReduce框架。对于不会持续计算的有界数据,我们用这种模式处理会更方便
  3. 自动模式(AUTOMATIC)在这种模式下,将由程序根据输入数据源是否有界,来自动选择执行模式。

BATCH模式的配置方法

通过命令行配置 

bin/flink run -Dexecution.runtime-mode=BATCH ...

或者通过代码写死

env.setRuntimeMode(RuntimeExecutionMode.BATCH)

设置运行模式需注意:用BATCH模式处理批量数据,用STREAMING模式处理流式数据。因为数据有界的时候,直接输出结果会更加高效;而当数据无界的时候, 我们没得选择——只有STREAMING模式才能处理持续的数据流。

 

标签:flink,StreamExecutionEnvironment,Flink,环境,模式,细节,执行,运行
来源: https://www.cnblogs.com/wdh01/p/16028585.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有