【Flink】DataStream API使用之执行环境

news2024/11/18 23:36:54

1. 执行环境

Flink 程序可以在各种上下文环境中运行:我们可以在本地 JVM 中执行程序,也可以提交
到远程集群上运行。不同的环境,代码的提交运行的过程会有所不同。这就要求我们在提交作业执行计算时,首先必须获取当前 Flink 的运行环境,从而建立起与 Flink 框架之间的联系。只有获取了环境
上下文信息,才能将具体的任务调度到不同的 TaskManager 执行。

1. 1 创建执行环境

创建执行环境主要是调用 getExecutionEnvironment 的静态方法。这个方法提供了三种方式可以自由选择需要使用的是什么环境。

1.1.1 getExecutionEnvironment

直接调用getExecutionEnvironment 方法,底层源码可以自由判断是本地执行环境还是集群的执行环境

StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

底层源码根据环境不同,返回不同的执行环境对象
在这里插入图片描述

1.1.2 createLocalEnvironment

创建本地执行环境,可以指定默认的并行度 parallelism 参数,如果不传入则使用CPU的默认核心核数 例如:createLocalEnvironment(2)

LocalStreamEnvironment localEnvironment = StreamExecutionEnvironment.createLocalEnvironment(4);

参数有很多,可以指定并行度,也可以传入Configuration对象。
在这里插入图片描述

1.1.3 createRemoteEnvironment

创建集群执行环境,需要指定JobMange的主机名和端口号,并指定在集群中运行的jar包

StreamExecutionEnvironment remoteEnvironment = StreamExecutionEnvironment.createRemoteEnvironment("host", 7777, "path/t/jarFile.jar");

当然你也可以传入并行度以及Configuration对象。
在这里插入图片描述

1.2 执行模式(Execution Mode)

在Flink中,新版本都是使用DataSream APIDataSetAPI 已经被抛弃了,而且DataSream API支持流批一体,默认是流处理。那么怎么才能让DataSream API使用批处理模式呢? 这就是Flink提供了你的代码的执行模式 Execution Mode

1.2.1 流处理模式(STREAMING)

Flink的DataSream API代码自动使用的是流处理模式,处理的都是需要持续实时处理的无界数据流

1.2.2 批执行模式(BATCH)

批处理模式是专门用于批处理,主要针对于不需要持续计算的有界数据 (批量数据在Flink中认为是有界数据流)

1.2.3 自动模式(AUTOMATIC)

根据输入数据是否有界,来自动选择执行模式

1.2.4 执行模式的配置方法

  1. 通过命令行配置执行模式
    bin/flink run -Dexecution.runtime-mode=BATCH ...

  2. 通过代码指定配置模式

    StreamExecutionEnvironment env = 
    StreamExecutionEnvironment.getExecutionEnvironment();
    env.setRuntimeMode(RuntimeExecutionMode.BATCH);
    

    在这里插入图片描述

1.3 什么时候选择 BATCH 模式

我们知道,Flink 本身持有的就是流处理的世界观,即使是批量数据,也可以看作“有界
流”来进行处理。所以 STREAMING 执行模式对于有界数据和无界数据都是有效的;而 BATCH
模式仅能用于有界数据。
看起来 BATCH 模式似乎被 STREAMING 模式全覆盖了,那还有必要存在吗?我们能不
能所有情况下都用流处理模式呢?
当然是可以的,但是这样有时不够高效。
我们可以仔细回忆一下 word count 程序中,批处理和流处理输出的不同:在 STREAMING
模式下,每来一条数据,就会输出一次结果(即使输入数据是有界的);而 BATCH 模式下,
只有数据全部处理完之后,才会一次性输出结果。最终的结果两者是一致的,但是流处理模式
会将更多的中间结果输出。在本来输入有界、只希望通过批处理得到最终的结果的场景下,
STREAMING 模式的逐个输出结果就没有必要了。
所以总结起来,一个简单的原则就是:用 BATCH 模式处理批量数据,用 STREAMING
模式处理流式数据。因为数据有界的时候,直接输出结果会更加高效;而当数据无界的时候, 我
们没得选择——只有 STREAMING 模式才能处理持续的数据流。-------------转自尚硅谷Flink教程

1.4 触发执行程序

需要注意的是,写完输出(sink)操作并不代表程序已经结束。因为当 main()方法被调用
时,其实只是定义了作业的每个执行操作,然后添加到数据流图中;这时并没有真正处理数据
——因为数据可能还没来。Flink 是由事件驱动的,只有等到数据到来,才会触发真正的计算,
这也被称为“延迟执行”或“懒执行”(lazy execution)。 -------------转自尚硅谷Flink教程

所以我们需要显式地调用执行环境的 execute()方法,来触发程序执行。execute()方法将一
直等待作业完成,然后返回一个执行结果(JobExecutionResult)。 -------------转自尚硅谷Flink教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Unity3D插件】动态连线插件CustomWire,使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 CustomWire插件可以在Unity3D中实现动态连线,将三维…

ADAudit Plus的UEBA功能如何解决企业面临的安全挑战

随着企业信息系统的不断发展和扩大,越来越多的安全威胁开始涌现。从内部员工的误操作到外部黑客的入侵,企业信息系统的安全风险日益增加。为了保护企业的关键数据和业务,企业需要采取一系列的安全措施。而其中一项关键的安全措施是实时监控和…

【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【BingChat】Microsoft Edge/Bing Chat 注册使用完全指南 1. BingChat 简介2. BingChat 用户注册2.1 下载微软浏览器 Edge 预览版2.2 申请微软账户2.3 登录 Bing.com2.4 手机/平板使用 BingChat 3. BingChat 的聊…

P1056 [NOIP2008 普及组] 排座椅

题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情。不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 �D 对同学上课时会交头接耳。 同学们…

【OpenSSH】无需公网IP使用SSH远程连接服务器

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

家里小孩要去学网络安全,网络安全行业前景到底怎么样?

最近接待了很多学生家长来咨询网络安全学习的问题。 家长们最主要关注三点:什么是网络安全?网络安全行业前景好吗?工资能拿多少?哪些专业什么学历可以学习网络安全? 那么盾叔就来综合解答一下。 什么是网络安全&…

UG NX二次开发(C#)-建模-判断一条曲线是否封闭的方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1、前言2、在UG NX中创建一条不封闭的曲线和一条封闭的曲线3、函数说明4、代码5、测试1、前言 前面有个博客介绍了边UG NX二次开发(C#)-建模-判断一条曲线是不是封闭,但是这个博客是判断边对象是…

Interest-aware Message-Passing GCN for Recommendation(www 21)

论文地址:https://arxiv.org/abs/2102.10044 BACKGROUND GCN信息聚合的模式非常适合推荐,但众所周知在模型设计的时候通常只能堆叠2-3层,再多就会出现过平滑问题(结点特征之间没有区分度),LightGCN证明了G…

【是C++,不是C艹】 引用的概念 | 引用的使用 | 引用与指针的区别

💞💞欢迎来到 Claffic 的博客💞💞 👉 专栏:《是C,不是C艹》👈 前言: 前面带大家学习了函数重载等C基础,这期继续C基础的学习:引用。 注&#xff1…

最常用的js混淆加密解

JS混淆加密是一种用于保护JS代码的技术,它能够将代码变得难以理解和修改,从而提高代码的安全性。但是,当我们需要修改和维护这些代码时,我们就会面临困难。因此,在某些情况下,我们需要解这些JS代码。 下面…

新唐NUC980使用记录(5.10.y内核):访问以太网(LAN8720A) 启用SSH

文章目录 目的修改内核和设备树以访问以太网制作根文件系统并启用SSH总结 目的 这篇文章主要测试新唐NUC980(5.10.y内核)访问以太网(PHY为LAN8720A)以及启用SSH。 这篇文章中内容均在下面的开发板上进行测试: 《新唐…

【三维几何学习】网格可视化-Cube engraving数据集

网格可视化-Cube engraving数据集 引言一、blender二、meshlab三、3D查看器 引言 三角网格(Triangular Mesh)分类数据集 MeshCNN: A Network with an Edge 可参考以上链接深入了解 or 下载数据集。Cube engraving(论文叫法)数据集,又称为Cubes classification datas…

ClickHouse之Explain查看执行计划

文章目录 前言基本语法EXPLAIN 类型EXPLAIN PLANEXPLAIN ASTEXPLAIN SYNTAXEXPLAIN PIPELINEEXPLAIN ESTIMATE 补充忠告 前言 在 clickhouse 20.6 版本之前要查看 SQL 语句的执行计划需要设置日志级别为 trace 才能 可以看到,并且只能真正执行 sql,在执…

快商通联合创始人李稀敏入选“科技专家库专家名单”

3月10,厦门市科学技术局关于2023年第一批拟入选科技专家库专家名单进行公示。经过层层审核,快商通联合创始人李稀敏入选“科技专家库专家名单”。 据了解,厦门市科学技术局的“科技专家库专家名单”是由市科技局精心挑选的一批优秀专家&…

Unsupervised Domain Adaption (UDA)及domain shift介绍

UDA UDA想解决的问题是目标域上数据标签的缺乏,具体而言,存在着源域和目标域,源域上存在大量的标注样本对 D s { ( X i , y i ) } D_s\{(X_i,y_i)\} Ds​{(Xi​,yi​)},我们可以在上面以有监督的方式训练各种模型,但此…

常见舆情监测系统的分类和特点

随着网络和社交媒体的发展,舆情监测系统逐渐成为企业和政府机构必备的工具之一。舆情监测系统可以帮助企业和政府机构全面了解公众对其品牌、产品、政策等的反应和态度,及时发现和解决问题,提高公信力和形象。本文将介绍常见的舆情监测系统的…

Python Tox

tox其核心作用是支持创建隔离的 Python 环境,在里面可以安装不同版本的 Python 解释器与各种依赖库,以此方便开发者做自动化测试、打包、持续集成等事情。 简单来说,tox 是一个管理测试虚拟环境的命令行工具。 我介绍一种应用场景&#xff…

如何在Jetpack Compose中设置渐变背景

如何在Jetpack Compose中设置渐变背景 只需几步即可通过平滑渐变增强应用程序的用户界面 虽然它经常出现在网络前端的世界中,但渐变背景可以为您的移动应用程序增添专业和美观的触感,使其对您的用户更具吸引力。 第 1 步:创建渐变画笔 为…

Semantic Segmentation using Adversarial Networks

首次将GAN用于语义分割,用于辨别分割图是来自GT还是来自分割网络。作者的想法来自借助GAN可以检测和矫正GT和模型分割图的高阶不一致。最后在Standford和PASCAL VOC 数据集上验证了想法。 对抗学习: 使用两个权重和的混合损失函数进行优化,第…

从win7升级到win10过程中遇到的问题:安装工具无法运行、卸载VMware

目录 1. 概述2. 微软官方安装工具无法运行3. 控制面板的卸载程序里面找不到VMware4. 输入产品密钥5. 安装完后仍然未激活6. 雨林木风 1. 概述 因为新电脑还没有到,把上学时候的笔记本翻出来顶一顶。旧笔记本还是win7,我的鼠标没办法使用,干脆…