文档章节

presto Resource Groups

 张欢19933
发布于 09/20 15:32
字数 1565
阅读 19
收藏 0

资源组

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

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

resource-groups.configuration-manager=file
resource-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#(?<tool_name>.*)",
      "clientTags": ["hipri"],
      "group": "global.adhoc.bi-${tool_name}.${USER}"
    },
    {
      "group": "global.adhoc.other.${USER}"
    }
  ],
  "cpuQuotaPeriod": "1h"
}

 

© 著作权归作者所有

共有 人打赏支持
粉丝 33
博文 460
码字总数 226276
作品 0
海淀
Presto 0.190 发布,Facebook 开源的大数据查询引擎

Presto 0.190 已发布,Presto 是 Facebook 开源的数据查询引擎,可对250PB以上的数据进行快速地交互式分析,查询的速度达到商业数据仓库的级别。据称该引擎的性能是 Hive 的 10 倍以上。 Pr...

王练
2017/12/08
516
0
Project Server 2016 权限模式

Project Server 从2013版开始,增加了sharepoint 模式,并默认使用sharepoint权限模式,设置中可以对比sharepoint权限模式(图一)和project server权限模式(图二)的显示区别: 可以使用命...

pclzr
2017/05/16
0
0
请问maven@osc。我上传的jar,然后在gradle中引用,报找不到

OSC你好。我在build.gradle中这样设置: buildscript { } 然后执行构建,得到这样的信息: Resource missing. [HTTP HEAD: http://maven.oschina.net/content/groups/public/com/zjzhai/jshi......

翟志军
2014/07/07
1K
2
SCIM: System for Cross-domain Identity Management

官网:http://www.simplecloud.info/ Overview The System for Cross-domain Identity Management (SCIM) specification is designed to make managing user identities in cloud-based appl......

Sam_Li
2014/04/02
0
0
hacmp环境下添加硬盘

Add/change/remove cluster resources You can add, change and remove a resource group in an active cluster. You do not need to stop and then restart cluster services for the resou......

liu99fifa
2017/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 到底谁是小公猫……

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:分享Trivium的单曲《Throes Of Perdition》 《Throes Of Perdition》- Trivium 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁:...

小小编辑
35分钟前
36
1
基础选择器

注意:本教程参考自网上流传的李兴华老师的jquery开发框架视频,但是苦于没有相应的配套笔记,由我本人做了相应的整理. 本次学习的内容 学习jquery提供的各种选择器的使用,掌握了jquery选择...

江戸川
41分钟前
1
0
Spring中static变量不能@value注入的原因

今天本想使用@Value的方式使类中的变量获得yml文件中的配置值,然而一直失败,获得的一直为null。 类似于这样写的。 public class RedisShardedPool { private static ShardedJedisPool pool...

钟然千落
今天
2
0
CentOS7防火墙firewalld操作

firewalld Linux上新用的防火墙软件,跟iptables差不多的工具。 firewall-cmd 是 firewalld 的字符界面管理工具,firewalld是CentOS7的一大特性,最大的好处有两个:支持动态更新,不用重启服...

dingdayu
今天
1
0
关于组件化的最初步

一个工程可能会有多个版本,有国际版、国内版、还有针对各种不同的渠道化的打包版本、这个属于我们日常经常见到的打包差异化版本需求。 而对于工程的开发,比如以前的公司,分成了有三大块业...

DannyCoder
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部