当前位置: 首页 > news >正文

Yarn上Streaming流自动调节资源设计

Streaming流自动调节资源

自动资源调节简单来说就是根据数据的输入速率和数据的消费速率来判断是否应该调节资源。如果输入速率大于消费速率,并且在输入速率还在攀升,则将该Job停止并调高Job的资源等级然后重启。如果消费速率大于输入速率,并且消费速率在上升,则停止Job并调低资源等级然后重启。

1.数据源数据收集

目前Yarn上的Streaming Job有两种数据源,一种是Kafka另一种是Delta Table Stream,两种数据源在sources中的strartOffset跟endOffset不同。运行的通过Job内嵌的KafkaStreamingQueryListener来采集数据输入信息,并将数据输入到指定的Kafka的Topic中。由于采集到的输入数据不同,所以在采集层不进行数据的解析,统一在DAG中处理。

Job数据源输入
Job数据源输入
数据源信息输入
Delta Table
Yarn Structured Streaming
Kafka
Kafka

2.数据源数据处理

DAG运行之后,会先进行数据源数据的处理,从Variables中获取到上次消费的offset位置,从kafka中获取当前最后数据的offset,然后消费两个offset之前的数据,数据处理完之后将Variables的offset位置置为当前最后数据的offset。

​ 2.1. Delta Stream处理:从1中获取到的数据源数据Delta Table没有具体的offset信息,所以将reservoirVersion作为消费的offset标识,然后将相同数据源的数据的消费标识组合成source_info,根据数据源中JobName跟source_info的Delta Table地址,用DeltaTable的history方法获取Delta表中这个版本之后的版本numOutputRows之和作为未消费的数据量unconsume_nums

​ 2.2. Kafka数据处理:从1中获取到的数据源Kafka数据能够获取到具体的offset信息,将startOffset作为消费标识,然后将相同数据源的数据的消费标识组合成source_info,把startOffset和endOffset中相同分区的offset做差再求和得到未消费的数据量unconsume_nums

然后将处理完之后的数据持久化到Mysql中,表结构如下:

表名streaming_consume_status
显示名称实时流消费情况表
描述记录流消费情况信息
Schema
粒度每条记录表示每五分钟一个Job的消费情况
更新周期每5分钟
表字段:
列名描述数据类型空值
id主键intN
unconsume_nums未消费的数据量intN
resource_level资源等级stringN
create_time创建时间timestampN
示例:
idjob_nameunconsume_numsresource_levelcreate_time
1name11212020-10-19 15:31:14
2name21512020-10-19 15:31:14
CREATE TABLE `streaming_consume_status` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',`job_name` varchar(64) COMMENT 'Job名称',`source_type` varchar(64) COMMENT '数据源类型',`unconsume_nums` int(11) COMMENT '未消费的数据数量',`resource_level` int(5) COMMENT '资源等级',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',PRIMARY KEY (`id`)
);CREATE TABLE `streaming_query_offset` (`job_name` varchar(64) COMMENT 'Job名称',`query_name` varchar(64) COMMENT 'QUERY名称',`delta_path` varchar(500) COMMENT 'delta路径',`offset` int(11) COMMENT 'query当前消费的offset/version',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`job_name`, `query_name`, `delta_path`)
);insert into streaming_query_offset (job_name, query_name, offset) values('product2.ods.streamingLogSinkJob', 'jclog_delta', 1000)INSERT INTO monitor.streaming_query_offset (job_name, query_name, delta_path, offset) values ("stage2.cdm.dim.streamingDimSCDJob", "gggg", 'cccc', 888) ON DUPLICATE KEY UPDATE offset = 888;INSERT INTO streaming_query_offset (job_name, query_name, offset) VALUES ('product2.ods.streamingLogSinkJob', 'elog_delta', 1003) ON DUPLICATE KEY UPDATE offset = 1003; 

3.资源调整策略

调整策略是根据一段时间内,输入数据量跟消费数据量的差值计算出的斜率曲线来判断。比如说取近30分钟的输入输出数据,从数据库会获得6条数据,根据消费数据量consumer_nums和生产数据量producer_nums计算出消费差值,看这个周期内的差值变化。

调高等级:如果计算出来的5个斜率都大于设置的阈值,就认为消费速率比生产速率慢很多,需要调高资源等级并重启流任务。

调低等级:如果计算出来的5个斜率都小于设置的阈值,就认为消费速率比生产速率快很多,需要调低资源等级并重启流任务来节省资源。

特殊情况,如果斜率都为0,会查看当前资源等级,如果不是最低则逐次降低资源等级。

如果斜率在-1到1之前,则认为消费速率正常,不需要调整资源等级。

DAG在运行到这步时,会从Mysql中读job_name为XX,并且时间最晚的6条数据,通过这六条数据来计算出斜率曲线。

4.资源调整

DAG在上一步判断出是否要调整资源之后,会向企业微信发报警通知当前Job发生资源调整操作,然后根据对应的JobName通过yarn client api获取当前的ApplicationId,然后调用api的kill方法将当前正在执行的流停止。然后修改从容器外映射到容器内的资源文件,调高或者调低配置,然后等待流自动重启即可。

相关文章:

Yarn上Streaming流自动调节资源设计

Streaming流自动调节资源 自动资源调节简单来说就是根据数据的输入速率和数据的消费速率来判断是否应该调节资源。如果输入速率大于消费速率,并且在输入速率还在攀升,则将该Job停止并调高Job的资源等级然后重启。如果消费速率大于输入速率,并…...

微信小程序的个人博客--【小程序花园】

微信目录集链接在此: 详细解析黑马微信小程序视频–【思维导图知识范围】难度★✰✰✰✰ 不会导入/打开小程序的看这里:参考 让别人的小程序长成自己的样子-更换window上下颜色–【浅入深出系列001】 文章目录 本系列校训啥是个人博客项目里的理论知识…...

智慧园区楼宇合集 | 图扑数字孪生管控系统

智慧园区是指将物联网、大数据、人工智能等技术应用于传统建筑和基础设施,以实现对园区的全面监控、管理和服务的一种建筑形态。通过将园区内设备、设施和系统联网,实现数据的传输、共享和响应,提高园区的管理效率和运营效益,为居…...

【代码随想录day21】二叉搜索树中的众数

题目 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满足如下定义&am…...

【防火墙】iptables防火墙(一)

防火墙具有隔离功能 主要部署在网络边缘或者主机边缘,防火墙的主要作用是决定哪些数据可以被外网访问,哪些数据可以进入内网访问 网络层(路由器):数据的转发 安全技术 1.入侵监测系统:在检测到威胁&…...

微信小程序之富文本特殊处理

文章目录 前言一、video的处理二、img的处理总结 前言 小程序中使用富文本编辑器,由于rich-text受限 部分富文本内容无法渲染或排版错乱。以img和video为例,处理起来让人头疼。网上各种长篇大论,实际上没有任何帮助。接下来我们就一起聊聊im…...

react-draft-wysiwyg富文本编辑器

在React项目中使用 yarn add react-draft-wysiwyg draft-js or npm i react-draft-wysiwyg draft-js推荐在项目中单独创建一个富文本编辑器组件 import { Editor } from "react-draft-wysiwyg"; import { EditorState, convertToRaw, ContentState } from draft-js…...

P5721 【深基4.例6】数字直角三角形

【深基4.例6】数字直角三角形 题目描述 给出 n n n,请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的,如果没有 2 2 2 位则加上前导 0 0 0。 输入格式 输入一个正整数 n n n。 输出格式 输出如题目要求的数字直…...

【电子设计大赛】2023 年全国大学生电子设计竞赛 仪器和主要元器件清单

2023 年全国大学生电子设计竞赛仪器设备和主要元器件及器材清单 [本科组] 1. 仪器设备清单 直流稳压电源(具有恒流/恒压模式自动切换功能,0~30V/3A,双路) 数字示波器(100MHz, 双通道) 函数发…...

(八九)如何与InfluxDB交互InfluxDB HTTP API

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 8 章 前言:如何与InfluxDB交互 1、InfluxDB启动后,会向外提供一套HTTP API。外部程…...

excel 生成sql技巧

"update 表名 set 字段名"&A2&" where 字段名"&B2&";"...

2023牛客暑期多校训练营2(D/E/F/H/I/K)

目录 D.The Game of Eating E.Square F.Link with Chess Game H.0 and 1 in BIT I.Link with Gomoku K.Box D.The Game of Eating 思路:倒着贪心。因为正着贪会导致一种局面:我选了当前喜爱值最大的菜,但是就算我不选这个菜&#xff0…...

Ubuntu搭建Samba服务-学习记录

文章目录 Ubuntu安装Samba流程Samba配置文件Samba添加账户配置文件修改Samba服务控制设置开机自动启动通过systemctl 启动服务通过 rc.local 启动 Windows访问参考链接 当前文章仅用于记录,在 Ubuntu中安装使用Samba,在Windows访问 系统环境:…...

Unity Shader - if 和 keyword 的指令比较

文章目录 环境TestingIf4Sampleunity shaderlab 中的 TestingIf4Sample.shadergraphics analyzer 中的 TestingIf4Sample.glsl TestingKW4Sampleunity shaderlab 中的 TestingKW4Sample.shadergraphics analyzer 中的 TestingKW4Sample.glsl 比较 环境 Unity : 2020.3.37f1 Pi…...

【C++入门到精通】C++入门 —— 类和对象(了解类和对象)

目录 一、类和对象的历史由来 二、面向过程和面向对象的初步认识 三、类 1.引子 2.类的定义 3.类的访问限定符及封装 ⭕访问限定符 🚩访问限定符解释说明 🚩struct 与 class 的区别 1. 默认访问级别: 2. 继承权限(默认的…...

DRS 迁移本地mysql 到华为云

准备工作: 源端的IP地址(公网),用户明和密码。如果通过公网迁移,需要在安全组放通drs访问源端数据库的3306端口。目标端的IP地址,用户名和密码。 创建DRS迁移任务 创建迁移任务 登录华为云控制台。单击管…...

腾讯云 Cloud Studio 实战训练营——快速构建React完成点餐H5页面

目录 ​编辑 一、前言 1、什么是腾讯云 Cloud Studio 2、本文实验介绍 二、前期准备工作 1、注册 Cloud Studio 2、初始化工作空间 三、开发一个简版的点餐系统页面 1、安装依赖 1.1、安装 antd-mobile 1.2、安装 less 和 less-loader 1.3、暴露 webpack 配置文件 …...

在 React 中,props(属性)用于在组件之间传递数据

在 React 中,props(属性)用于在组件之间传递数据。它是父组件向子组件传递信息的一种方式,通过 props,父组件可以向子组件传递数据、回调函数、配置项等。 注意: props 是只读的,它的值由父组件…...

Unity实现camera数据注入RMP推送或轻量级RTSP服务模块

技术背景 随着技术的不断进步和应用的不断深化,Unity3D VR应用的前景非常广阔,它广泛应用于教育、医疗、军事、工业设计、虚拟数字人等多个领域。 教育领域:Unity3D VR技术可以用来创建虚拟现实教室,让学生能够身临其境地体验课…...

CVPR2023新作:3D感知的AI换脸算法

Title: 3D-Aware Face Swapping (3D感知的人脸交换) Affiliation: 上海交通大学人工智能研究所 Authors: Yixuan Li, Chao Ma, Yichao Yan, Wenhan Zhu, Xiaokang Yang Keywords: Face swapping, 3D human faces, Generative Adversarial Network, geometry Summary: (1):…...

PostCSS-CSSNext终极指南:10个关键检查点确保CSS代码质量与兼容性

PostCSS-CSSNext终极指南:10个关键检查点确保CSS代码质量与兼容性 【免费下载链接】postcss-cssnext postcss-cssnext has been deprecated in favor of postcss-preset-env. 项目地址: https://gitcode.com/gh_mirrors/po/postcss-cssnext PostCSS-CSSNext是…...

文献阅读 260404-Effect of climate warming on the timing of autumn leaf senescence reverses after ...

Effect of climate warming on the timing of autumn leaf senescence reverses after the summer solstice 来自 <https://www.science.org/doi/10.1126/science.adf5098> ## Abstract: Structured Abstract INTRODUCTION Ongoing climate change is causing rapid shif…...

全文降AI和分段降AI效果差这么多?原因解释清楚

全文降AI和分段降AI效果差这么多&#xff1f;原因解释清楚 先说数据&#xff1a;同一篇论文&#xff08;初始48%&#xff09;&#xff0c;分段处理后AI率降到31%&#xff0c;全文处理后AI率降到9%。 差距22个百分点&#xff0c;不是小数目。 为什么会差这么多&#xff1f;这…...

交通运输部关于印发《交通运输综合应急预案》等5项突发事件应急预案的通知

交通运输部于 2026 年印发的《交通运输综合应急预案》等五项突发事件应急预案&#xff0c;构建起总领统筹、分领域专项、全链条衔接的交通运输应急管理体系&#xff0c;分别从综合协同、公路设施、水路运行、道路运输、工程建设五个维度&#xff0c;明确了突发事件预防、预警、…...

OpenText Static Application Security Testing (Fortify) 26.1 (macOS, Linux, Windows) - 静态应用安全测试

OpenText Static Application Security Testing (Fortify) 26.1 (macOS, Linux, Windows) - 静态应用安全测试 OpenText SAST 之前称为 Fortify SCA - 代码漏洞扫描工具 | 静态代码测试 | 代码安全分析 请访问原文链接&#xff1a;https://sysin.org/blog/opentext-sast/ 查看…...

后软件时代:当交互成为本能

从显式操作到隐式协同,从界面到无界 范式转移:从“使用工具”到“与伙伴共存” 当软件不再以独立形态存在,交互的本质将从主动操作变为自然协同。这不仅是技术变革,更是人类与机器关系的根本重构。 交互层级的演进 第一层:意图直连 过去:打开App → 点击按钮 → 输入…...

SOA和微服务比较详解

SOA 与微服务架构深度比较 面向服务架构(SOA)和微服务架构(Microservices)都是将系统拆分为可独立部署的服务单元的设计风格,但它们在粒度、通信方式、数据管理、治理、适用场景等方面存在本质差异。系统分析师需要根据业务需求、团队能力和技术栈选择适合的架构。 一、定…...

django让所有的静态文件都需要登录才能访问-----exoplayer设置cookie

禁止apache直接访问&#xff1a;设置&#xff1a;/etc/apache2/sites-available/000-default.conf<Directory "/var/www/html/music">Require all denied </Directory>def get_music(request,filename):file_path f"/var/www/html/music/{filename…...

旧设备升级指南:用OpenCore Legacy Patcher让Mac重获新生的5个实用步骤

旧设备升级指南&#xff1a;用OpenCore Legacy Patcher让Mac重获新生的5个实用步骤 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果系统的不断更新&a…...

三相桥式电压型逆变电路的Simulink仿真展示

三相桥式电压型逆变电路Simulink仿真展示~ ~鼠标在Simulink库里翻找元器件时突然想起&#xff0c;当年被三相桥式逆变电路支配的恐惧。这货看起来简单&#xff0c;六个IGBT排排坐吃果果&#xff0c;但真搭起模型来&#xff0c;门极驱动时序能让人头秃。今天咱们就手把手搞个能跑…...