博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
presto Resource Groups
阅读量:6716 次
发布时间:2019-06-25

本文共 5257 字,大约阅读时间需要 17 分钟。

hot3.png

资源组

资源组限制资源使用,可以对运行在其中的任务执行强制排队策略,也可以在子组间分配资源。一个任务属于一个资源组,消费这个组的资源。除了对排队任务限制外,当资源组用完资源时,不会导致正在运行的任务失败,而是让新的任务排队。资源组可能有子组或者接收任务,也可能都不。

资源组和相关筛选规则由一个插件配置。etc/resource-groups.properties这个配置文件有如下内容,内部插件可以读取json配置文件。

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

修改resource-groups.config-file这个属性的值指向一个json配置文件,这个可以是一个相对路径也可以是一个绝对路径。

资源组属性

name(必须):组名称,可以是一个模板

maxQueued(必须):排队任务的最大数量,一旦达到这个数量,新的任务将被拒绝

hardConcurrencyLimit(必须):正在运行的任务的数量

softMemoryLimit(必须):这个组分布式内存的最大使用量,一旦到达,新任务排队。可以指定为一个绝对值,也可以指定对集群的百分比。

softCpuLimit(可选):一个周期里可以使用cpu的时间,hardCpuLimit也必须指定

hardCpuLimit(可选):一个周期里可以使用的cpu时间

schedulingPolicy(可选):指定排队任务执行的优先级,子组执行任务的优先级,有以下三个选项:

  • fair(默认):排队中的查询以first-in-first-out形式调度,如果子组中有排队,轮流执行 
  • weighted_fair:子组选择基于schedulingWeight和目前在运行的任务。运行的任务需要的资源是基于合格的子组的权重。选择相对于其资源具有最少并发性的子组来启动下一个查询。
  • weighted:排队任务按照优先级顺序随机选择,选择子组与它们的调度权重成比例地启动新查询。
  • query_priority:所有子组也必须指定query_priority,排队任务将根据priority严格执行

schedulingWeight(可选):子组权重,默认为1

jmxExport(可选):如果设置为true,组相关的统计指标被吓到JMX以便监控,默认为false

subGroups(可选):子组列表

选择规则

user(可选):匹配用户名

source(可选):匹配源头

queryType(可选):匹配任务类型

  • DATA_DEFINITION:alter/create/drop schemas/tables/views的元数据和权限、会话、事物相关的任务
  • DELETE:删除数据的任务
  • DESCRIBE:DESCRIBEDESCRIBE INPUTDESCRIBE OUTPUT, and SHOW类型的任务
  • EXPLAIN:EXPLAIN类型的任务
  • INSERT:INSERT 和 CREATE TABLE AS 类型的任务
  • SELECT:SELECT类型的任务

clientTags(可选):tag列表,每个tag必须在用户提交任务的tag列表里 

group(必须):这些任务运行的组

全局属性

cpuQuotaPeriod(可选):cpu份额被强制执行的时间

选择器顺序处理,匹配的第一个将被使用

提供选择器属性

source名字可以如下设置:

  • CLI:用--source属性
  • JDBC:通过连接实例设置ApplicationName属性

Client tags可以如下设置

  • CLI:用--client-tags属性
  • JDBC:通过连接实例设置ClientTags属性

例子

例子中的配置如下,这里有多个资源组,一些是模板。模板允许管理员动态的构建资源树。例如,在pipeline_${USER} 组中,${USER}将被扩展为提交任务的用户名。${SOURCE}也支持,将被扩展为提交任务的来源。你可以用自定义变量在source和user正则表达式中

这里定义了四个筛选器,这些任务运行在子组中:

  • 第一个筛选器匹配bob的任务,并放在admin组中运行
  • 第二个筛选器匹配所有的来源名字包含pipeline的DDL任务,放在global.data_definition组中运行。这有助于减少这类任务的执行时间,因为他们一般需要快速运行
  • 第三个筛选器匹配来源中包含pipeline的任务,并放在global.pipeline中的dynamically-created per-user pipeline组中
  • 第四个筛选器来源于 BI tools 的任务,并且客户端提供的tag是“hi-pri”的超集。他们被放在global.pipeline.tools组里的动态创建的子组。动态子组的创建基于tool_name变量的名字,从来源的正则表达式中取出。一个任务来源为“jdbc#powerfulbi”,用户为“kayla”,客户端tag为“hipri”和“fast”,这个任务将被放在global.pipeline.bi-powerfulbi.kayla资源组中。
  • 最后一个筛选器是针对所有没有被前面匹配的任务。

这些筛选器继承了如下策略:

  • 用户“bob”是管理员,能同时运行50个任务,任务运行基于用户提供的priority

其它的用户:

  • 不能同时运行100个任务
  • 来源为“pipeline”的最多可以同时运行5个DDL任务,先进先出
  • Non-DDL任务运行在global.pipeline中,总并发为45,每个用户并发为5,先进先出
  • 对应BI tools,每个tools最多可以运行10个任务,每个用户最多运行3个。如果超过10个,运行任务最少的用户将可以继续运行,这样是保持公平。
  • 其它任务被放在global.adhoc.other中的per-user 组中运行,运行相似
{  "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#(?
.*)", "clientTags": ["hipri"], "group": "global.adhoc.bi-${tool_name}.${USER}" }, { "group": "global.adhoc.other.${USER}" } ], "cpuQuotaPeriod": "1h"}

 

转载于:https://my.oschina.net/u/2000675/blog/2088173

你可能感兴趣的文章
安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
查看>>
js中substr与substring的差别
查看>>
A06_RelativeLayout的属性设置
查看>>
Quartz中时间表达式的设置-----corn表达式
查看>>
javac: cannot execute binary file
查看>>
使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
查看>>
使用Ajax的Time实现倒计时功能
查看>>
WinFrom界面框架之WeifenLuo.WinFormsUI.Docking + OutLookBar
查看>>
Solr字段配置错误
查看>>
Android ActionBar详解(二):ActionBar实现Tabs标签以及下拉导航
查看>>
使用windbg查看DependencyObject的属性
查看>>
Rotate List
查看>>
IE首页被篡改(手动修复)
查看>>
html5开发之viewport使用
查看>>
Oralce 处理字符串函数
查看>>
C程序中引用自定义的C函数模块
查看>>
关于C# XML序列化的一个BUG的修改
查看>>
[Bower] Bower
查看>>
Android 网络通信框架Volley简介(Google IO 2013)
查看>>
杂记- 3W互联网的圈子,大数据敏捷BI与微软BI的前端痛点
查看>>