Presto资源管理之Resource Groups And Selector

文章目录

  • 前言
  • 资源组配置
  • 选择器规则 Selector Rules
  • 全局配置 Global Properties
  • 选择器属性
  • 配置案例
    • 配置

在这里插入图片描述

prestoDb

前言

资源组对资源使用进行限制,并可以对在其中运行的查询执行队列策略,或将资源分配给子组。查询属于单个资源组,并且从该组(及其祖先)消耗资源。除了排队查询的限制外,当资源组耗尽资源时,不会导致正在运行的查询失败;而是新查询进入排队状态。资源组可以拥有子组或接受查询,但不能两者兼有。

资源组和相关的选择规则是由可插拔的管理器进行配置的。要启用内置的管理器以读取 JSON 配置文件,请添加一个包含以下内容的 etc/resource-groups.properties 文件:

resource-groups.configuration-manager=file
resource-groups.config-file=etc/resource_groups.json

将 resource-groups.config-file 的值更改为指向一个 JSON 配置文件,可以是绝对路径,也可以是相对于 Presto 数据目录的路径

资源组配置

  • name (必填): 组的名称。可以是一个模板(见下文)。

  • maxQueued (必填): 最大排队查询数量。一旦达到此限制,新查询将被拒绝。

  • hardConcurrencyLimit (必填): 最大并发运行查询数量。

  • softMemoryLimit (必填): 在新查询进入排队状态之前,该组可以使用的分布式内存的最大量。可以指定为绝对值(例如 1GB)或者作为集群内存的百分比(例如 10%)。

  • softCpuLimit(可选):在一段时间内(参见cpuQuotaPeriod),该组可使用的最大CPU时间,否则将对最大运行查询数量应用惩罚。还必须指定 hardCpuLimit。

  • schedulingPolicy(可选):指定如何选择排队查询来运行,以及子组如何有资格开始查询。可以是三个值之一:
    ○ 公平(默认):排队查询先入先出,子组必须轮流启动新查询(如果有任何排队的查询)。
    ○ weighted_fair:根据子组的计划选择权重和查询,它们已经在并发运行。运行查询的预期份额基于所有当前符合条件的子组的权重来计算子组。子组选择相对于其共享的并发性最小的来启动下一个查询。
    ○ 加权:排队查询是按优先级随机选择的
    (通过query_priority:doc:session属性</sql/set session>指定)。已选择子组
    以按其schedulingWeight的比例启动新查询。
    ○ query_priority:还必须配置所有子组

  • hardCpuLimit(可选):在一段时间内,该组可使用的最大 CPU 时间。

  • schedulingPolicy(可选):指定如何选择在队列中等待运行的查询,并确定子组何时有资格启动其查询。可以是以下三个值之一:

    • fair(默认):按照先进先出的顺序处理排队的查询,并且子组必须轮流开始新的查询(如果它们有排队的查询)。
    • weighted_fair:根据子组的 schedulingWeight 和其当前并发运行的查询数量选择子组。对于所有当前符合条件的子组,根据其权重计算其预期运行查询的份额。选择相对于其份额具有最少并发性的子组来启动下一个查询。
    • weighted:按照查询的优先级(通过 query_priority:doc:session 属性 </sql/set-session> 指定)按比例选择排队的查询。按照其 schedulingWeight 按比例选择子组来启动新的查询。
    • query_priority:所有子组还必须配置 query_priority。将根据查询的优先级严格选择排队的查询。
  • schedulingWeight(可选):该子组的权重。参见上述说明。默认为1。

  • jmxExport(可选):如果设置为 true,将导出组统计信息到 JMX 以进行监控。默认为 false。

  • perQueryLimits(可选):指定资源组中每个查询可以使用的最大资源量,超过限制将被终止。这些限制不会从父组继承。可以设置三种类型的限制:

    • executionTimeLimit(可选):指定查询可以执行的最长时间的绝对值(例如 1h)。
    • totalMemoryLimit(可选):指定查询可以使用的最大分布式内存的绝对值(例如 1GB)。
    • cpuTimeLimit(可选):指定查询可以使用的最大 CPU 时间的绝对值(例如 1h)。
  • subGroups(可选):子组的列表。

请注意,其中必填项的属性,需要在 JSON 配置文件中进行配置。

选择器规则 Selector Rules

  • user(可选):用于匹配用户名的正则表达式。
  • source(可选):用于匹配来源字符串的正则表达式。
  • queryType(可选):用于匹配提交的查询类型的字符串:
    • DATA_DEFINITION:用于修改/创建/删除模式/表/视图的元数据以及管理预编译语句、权限、会话和事务的查询。
    • DELETE:DELETE 查询。
    • DESCRIBE:DESCRIBE、DESCRIBE INPUT、DESCRIBE OUTPUT 和 SHOW 查询。
    • EXPLAIN:EXPLAIN 查询。
    • INSERT:INSERT 和 CREATE TABLE AS 查询。
    • SELECT:SELECT 查询。
  • clientTags(可选):标签列表。为了匹配,此列表中的每个标签都必须在与查询相关联的客户端提供的标签列表中。
  • group(必需):这些查询将在其中运行的组。

全局配置 Global Properties

  • cpuQuotaPeriod(可选):强制执行 CPU 配额的周期。

选择器按顺序处理,并使用第一个匹配的选择器。

选择器属性

可以按以下方式设置来源名称:

  • CLI:使用 --source 选项。
  • JDBC:在 Connection 实例上设置 ApplicationName 客户端信息属性。

可以按以下方式设置客户端标签:

  • CLI:使用 --client-tags 选项。
  • JDBC:在 Connection 实例上设置 ClientTags 客户端信息属性。

配置案例

在下面的示例配置中,有几个资源组,其中一些是模板。
模板允许管理员动态构建资源组树。例如,在 pipeline_ U S E R 组中, {USER} 组中, USER组中,{USER} 将扩展为提交查询的用户名称。还支持 ${SOURCE},它将扩展为提交查询的来源。您还可以在来源和用户正则表达式中使用自定义命名变量。

这里有四个选择器,定义了哪些查询在哪些资源组中运行:

  • 第一个选择器匹配来自 bob 的查询,并将其放入 admin 组中。
  • 第二个选择器匹配所有来自包含“pipeline”的来源名称的数据定义(DDL)查询,并将其放入 global.data_definition 组中。这有助于减少这类查询的排队时间,因为预期它们会很快。
  • 第三个选择器匹配来自包含“pipeline”的来源名称的查询,并将其放入全局.pipeline 组下动态创建的每个用户 pipeline 组中。
  • 第四个选择器匹配来自 BI 工具的查询(其来源匹配正则表达式“jdbc#(?<tool_name>.*)”),并且具有客户端提供的标签,这些标签是“hi-pri”的超集。这些查询将被放置在全局.pipeline.tools 组下动态创建的子组中。动态子组将基于从来源的正则表达式中提取的名为 tool_name 的命名变量创建。考虑一个具有来源“jdbc#powerfulbi”、用户“kayla”和客户端标签“hipri”和“fast”的查询。此查询将被路由到 global.pipeline.bi-powerfulbi.kayla 资源组。
  • 最后一个选择器是一个全捕获器,将所有尚未匹配的查询放入每个用户 adhoc 组中。

这些选择器一起实施以下策略:

  • 用户“bob”是管理员,可以同时运行最多 50 个查询。查询将根据用户提供的优先级运行。

对于其余用户:

  • 最多可同时运行 100 个查询。
  • 只能运行最多 5 个带有来源“pipeline”的并发 DDL 查询。查询按照先进先出的顺序运行。
  • 非 DDL 查询将在全局.pipeline 组下运行,总并发数为 45,每用户并发数为 5。查询按照先进先出的顺序运行。
  • 对于 BI 工具,每个工具可以同时运行最多 10 个查询,每个用户可以运行最多 3 个查询。如果总需求超过 10 的限制,具有最少运行查询的用户将获得下一个并发插槽。在竞争情况下,此策略实现公平性。
  • 所有剩余查询将被放入类似的全局.adhoc.other 下的每个用户组中。

配置

{"rootGroups": [{"name": "global","softMemoryLimit": "80%","hardConcurrencyLimit": 100,"maxQueued": 1000,"schedulingPolicy": "weighted","jmxExport": true,"subGroups": [{"name": "data_definition","softMemoryLimit": "10%","hardConcurrencyLimit": 5,"maxQueued": 100,"schedulingWeight": 1},{"name": "adhoc","softMemoryLimit": "10%","hardConcurrencyLimit": 50,"maxQueued": 1,"schedulingWeight": 10,"subGroups": [{"name": "other","softMemoryLimit": "10%","hardConcurrencyLimit": 2,"maxQueued": 1,"schedulingWeight": 10,"schedulingPolicy": "weighted_fair","subGroups": [{"name": "${USER}","softMemoryLimit": "10%","hardConcurrencyLimit": 1,"maxQueued": 100}]},{"name": "bi-${tool_name}","softMemoryLimit": "10%","hardConcurrencyLimit": 10,"maxQueued": 100,"schedulingWeight": 10,"schedulingPolicy": "weighted_fair","subGroups": [{"name": "${USER}","softMemoryLimit": "10%","hardConcurrencyLimit": 3,"maxQueued": 10}]}]},{"name": "pipeline","softMemoryLimit": "80%","hardConcurrencyLimit": 45,"maxQueued": 100,"schedulingWeight": 1,"jmxExport": true,"subGroups": [{"name": "pipeline_${USER}","softMemoryLimit": "50%","hardConcurrencyLimit": 5,"maxQueued": 100}]}]},{"name": "admin","softMemoryLimit": "100%","hardConcurrencyLimit": 50,"maxQueued": 100,"schedulingPolicy": "query_priority","jmxExport": true}],"selectors": [{"user": "bob","group": "admin"},{"source": ".*pipeline.*","queryType": "DATA_DEFINITION","group": "global.data_definition"},{"source": ".*pipeline.*","group": "global.pipeline.pipeline_${USER}"},{"source": "jdbc#(?<tool_name>.*)","clientTags": ["hipri"],"group": "global.adhoc.bi-${tool_name}.${USER}"},{"group": "global.adhoc.other.${USER}"}],"cpuQuotaPeriod": "1h"
}

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android开发布局知识

插件开发的视频笔记&#xff1a;

宝塔部署QQ机器人,提示OpenSSL 1.0.2k-fips 26 Jan 2017

1、报错预览 Traceback (most recent call last):File "/www/wwwroot/python/bot-one/main.py", line 5, in <module>import requestsFile "/www/wwwroot/python/bot-one/343ae0eb0d491a10a1a00c0621b03ed0_venv/lib/python3.9/site-packages/requests/_…

投票助手图文音视频礼物打赏流量主小程序开源版开发

投票助手图文音视频礼物打赏流量主小程序开源版开发 图文投票&#xff1a;用户可以发布图文投票&#xff0c;选择相应的选项进行投票。 音视频投票&#xff1a;用户可以发布音视频投票&#xff0c;观看音视频后选择相应的选项进行投票。 礼物打赏&#xff1a;用户可以在投票过…

银行余额修改生成器,虚拟农业建设工商邮政中国,画板+取快照生成png高清图

在网上找了很多模版&#xff0c;一共好几个&#xff0c;然后都插入到了图片资源库里面&#xff0c;点击指定的单选框就会自动更换易语言画板上面的图片&#xff0c;然后模版上面都对应了指定的标签【透明状态覆盖了原有的字符】&#xff0c;然后在指定的参数上面对应加入了指定…

CSS实现文本左右对齐

因为文本里面有中午符号&#xff0c;英文&#xff0c;英文符号等&#xff0c;导致设置宽度以后右侧凌乱&#xff0c;可以通过以下代码设置样式&#xff0c;让文本工整对齐。 让我们看一下设置前和设置后的对比图片&#xff1a; 效果图如下&#xff1a;&#xff08;左边是设置…

1 快速了解Paimon数据湖核心原理及架构

1.1 什么是Apache Paimon Apache Paimon的前身属于Flink的子项目&#xff1a;Flink Table Store。 目前业内主流的数据湖存储项目都是面向批处理场景设计的&#xff0c;在数据更新处理时效上无法满足流式数据湖的需求&#xff0c;因此Flink社区在2022年的时候内部孵化了 …

C#查看启用或关闭的Windows功能

通过命令查看启用或关闭的Windows功能&#xff0c;以管理员身份打开powershell&#xff0c;输入命令get-windowsoptionalfeature -online 得出结果如下&#xff1a; 如果使用C#查看&#xff0c;需要先安装System.Management 代码如下&#xff1a; private void isInstall() …

已解决:rm: 无法删除“/opt/module/zookeeper-3.4.10/zkData/zookeeper_server.pid“: 权限不够

解决&#xff1a; ZooKeeper JMX enabled by default Using config: /opt/module/zookeeper-3.4.10/bin/../conf/zoo.cfg Stopping zookeeper ... /opt/module/zookeeper-3.4.10/bin/zkServer.sh: 第 182 行:kill: (4149) - 不允许的操作 rm: 无法删除"/opt/module/zooke…

20231108在Ubuntu22.04下编译安装cmake-3.27.7.tar.gz

20231108在Ubuntu22.04下编译安装cmake-3.27.7.tar.gz 2023/11/8 17:28 缘起&#xff0c;编译cv180zb的时候提示说cmake的版本低&#xff01; OBJCOPY platform/generic/firmware/payloads/test.bin OBJCOPY platform/generic/firmware/fw_dynamic.bin OBJCOPY platfor…

【FPGA】正确处理设计优先级--或许能帮你节省50%的资源

概述 假如现在有一种方法–可以在不怎么需要修改已有设计的情况下&#xff0c;就可以帮您节省50%的设计资源&#xff0c;那你会试试看吗&#xff1f; 当前市场环境下&#xff0c;更低廉的成本却可获得同等性能无疑是极具诱惑的。本文将介绍一种FPGA设计技术&#xff0c;该技术…

【Linux网络】2分钟学习centos7永久修改网卡名称

目录 第一步&#xff0c;先查看网卡名称 第二步&#xff1a;先修改配置文件/etc/default/grub&#xff0c;添加net.ifnemes0 第三步&#xff1a;重新加载内核配置grub2-mkconfig -o /boot/grub2/grub.cfg 第四步&#xff1a;重启电脑 第五步&#xff1a;查看网卡名称&…

微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例

微带线的ABCD矩阵的推导、转换与级联-Matlab计算实例 散射参数矩阵有实际的物理意义&#xff0c;但是其无法级联计算&#xff0c;但是ABCD参数和传输散射矩阵可以级联计算&#xff0c;在此先简单介绍ABCD参数矩阵的基本用法。 1、微带线的ABCD矩阵的推导 其他的一些常用的二端…

应用在便携式多媒体播放器中的音频Codec芯片

便携式多媒体播放器(PMP&#xff0c;Portable Media Player)&#xff0c;也就是通常人们所说的MP4。PMP的主要优点是&#xff1a;携带方便&#xff0c;能够直接播放高品质音/视频文件&#xff1b;也可以浏览图片&#xff0c;以及作为移动硬盘使用&#xff1b;此外&#xff0c;P…

【面试经典150 | 位运算】二进制求和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;模拟 其他语言c 写在最后 Tag 【二进制】【位运算】 题目来源 67. 二进制求和 题目解读 以二进制字符串的形式返回两个二进制字符串的和。 解题思路 看到这个题目首先想到的方法可能是先把二进制字符转化成 int 型数…

内存管理

目录 C/C内存分布 引入 分析 说明 C语言内存管理方式&#xff1a;malloc calloc realloc free malloc realloc calloc 面试题 C内存管理方式 new/delete操作符 用法 new和delete操作自定义类型 operator new和operator delete函数 operator new ​编辑 operator…

H264 NALU分析

H264简介 H.264从1999年开始&#xff0c;到2003年形成草案&#xff0c;最后在2007年定稿有待核实。在ITU的标准⾥称为H.264&#xff0c;在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10&#xff0c;⼜叫AdvancedVideo Codec&#xff0c;因此常常称为MPEG-4 AVC或直接叫…

一文概览NLP句法分析:从理论到PyTorch实战解读

本文全面探讨了自然语言处理&#xff08;NLP&#xff09;中句法分析的理论与实践。从句法和语法的定义&#xff0c;到各类句法理论和方法&#xff0c;文章细致入微地解析了句法分析的多个维度。最后&#xff0c;通过PyTorch的实战演示&#xff0c;我们展示了如何将这些理论应用…

云服务器哪家便宜靠谱 | 简单了解亚马逊云科技发展史

云服务器哪家便宜又靠谱呢&#xff1f;为什么说亚马逊云科技在这道题答案的第一行&#xff0c;一篇故事告诉你。 1994年&#xff0c;杰夫贝索斯在西雅图创建了亚马逊&#xff0c;最初只是一个在线书店。 1997年&#xff0c;亚马逊在纳斯达克交易所上市&#xff0c;成为一家公…

webpack的简单使用

什么是webpack&#xff08;去官网看详细的API&#xff09; 本质上&#xff0c;webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口点构建一个 依赖图(dependency graph)&#xff0c;然后将你项…

Linux——手把手教你解决sudo指令无法使用的问题

解决sudo指令无法使用的问题 1. 为什么不能使用 sudo指令能够使某一条指令拥有root权限&#xff0c;即以root权限去执行 例如&#xff1a; sudo ls -l //就是以root权限查看当前目录里的内容但是&#xff0c;如果是新创建的普通账户&#xff0c;一般来说一开始是不能执行s…