标签:current 管理类 支持 blog ice 方案 磁盘空间 相同 最大
<property> <name>hawq_global_rm_type</name> <value>none</value> </property>该属性为全局设置,需要重启HAWQ以生效。当然也可以使用ambari,在HAWQ->Configs->Resource Manager进行设置,然后重启HAWQ服务。
[gpadmin@hdp3 ~]$ hawq config -s hawq_global_rm_type GUC : hawq_global_rm_type Value : none [gpadmin@hdp3 ~]$
<property> <name>hawq_rm_memory_limit_perseg</name> <value>8GB</value> </property> <property> <name>hawq_rm_nvcore_limit_perseg</name> <value>4</value> </property>hawq_rm_memory_limit_perseg参数设置独立资源管理模式下,每个HAWQ segment使用的最大内存数。hawq_rm_nvcore_limit_perseg参数设置每个HAWQ segment使用的最大CPU虚拟核数。
db1=# set hawq_rm_stmt_vseg_memory=‘256mb‘; SET db1=# set hawq_rm_stmt_nvseg=10; SET db1=# create table t(i integer); CREATE TABLE db1=# insert into t values(1); INSERT 0 1 db1=#HAWQ是动态为给定查询语句分配资源的,资源管理器只是分配segment的资源,而不会为查询保留资源。并且,语句级设置的虚拟段数不要超过全局配置参数hawq_rm_nvseg_perquery_limit的值。
图3
(3)在yarn.resourcemanager.scheduler.class输入框中输入以下值:org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler该属性值设置YARN的调度器为Capacity。
yarn.scheduler.capacity.maximum-am-resource-percent=0.2 yarn.scheduler.capacity.maximum-applications=10000 yarn.scheduler.capacity.node-locality-delay=40 yarn.scheduler.capacity.root.acl_administer_queue=* yarn.scheduler.capacity.root.capacity=100 yarn.scheduler.capacity.root.queues=mrque1,mrque2,hawqque yarn.scheduler.capacity.root.hawqque.capacity=20 yarn.scheduler.capacity.root.hawqque.maximum-capacity=80 yarn.scheduler.capacity.root.hawqque.state=RUNNING yarn.scheduler.capacity.root.hawqque.user-limit-factor=1 yarn.scheduler.capacity.root.mrque1.capacity=30 yarn.scheduler.capacity.root.mrque1.maximum-capacity=50 yarn.scheduler.capacity.root.mrque1.state=RUNNING yarn.scheduler.capacity.root.mrque1.user-limit-factor=1 yarn.scheduler.capacity.root.mrque2.capacity=50 yarn.scheduler.capacity.root.mrque2.maximum-capacity=50 yarn.scheduler.capacity.root.mrque2.state=RUNNING yarn.scheduler.capacity.root.mrque2.user-limit-factor=1缺省的Capacity调度策略只有一个名为default的资源队列。以上属性在根队列下设置两个MapReduce队列和一个名为hawqque的HAWQ专用队列,三个队列并存,共享整个集群资源。hawqque队列可以使用整个集群20%到80%的资源。表1说明了队列配置的主要属性及其含义。
属性名称 | 描述 |
yarn.scheduler.capacity.maximum-am-resource-percent | 集群中可用于运行application master的资源比例上限,通常用于限制并发运行的应用程序数目。示例中设置为0.2,即20%。 |
yarn.scheduler.capacity.maximum-applications | 集群中所有队列同时处于等待和运行状态的应用程序数目上限,这是一个强限制,一旦集群中应用程序数目超过该上限,后续提交的应用程序将被拒绝,默认值为10000。 |
yarn.scheduler.capacity.node-locality-delay | 调度器尝试调度一个rack-local container之前,最多跳过的调度机会。通常该值被设置成集群中机架数目,缺省值为40,接近一个机架中的节点数目。 |
yarn.scheduler.capacity.<queue_name>.queues | 定义本队列下的资源队列。即资源队列树中某节点的直接下级节点。 |
yarn.scheduler.capacity.<queue_name>.capacity | 一个百分比的值,表示队列占用整个集群的百分之多少比例的资源。 |
yarn.scheduler.capacity.<queue_name>.maximum-capacity | 弹性设置,队列最多占用多少比例的资源。 |
yarn.scheduler.capacity.<queue_name>.state | 队列状态,可以是RUNNING或STOPPED。 |
yarn.scheduler.capacity.<queue_name>.user-limit-factor | 每个用户的低保百分比,比如设置为1,则表示无论有多少用户在跑任务,每个用户占用最低不会少于1%的资源。 |
图4
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>4GB</value> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>1</value> </property>或者使用ambari的YARN -> Configs -> Settings进行配置,yarn.nodemanager.resource.memory-mb和yarn.nodemanager.resource.cpu-vcores的设置分别如图5、图6所示。
图6
<property> <name>hawq_global_rm_type</name> <value>yarn</value> </property>或者使用ambari的HAWQ -> Configs -> Settings -> Resource Management 进行配置,如图7所示。
图7
这样HAWQ资源管理器只会使用YARN分配的资源。<property> <name>hawq_rm_yarn_address</name> <value>hdp2:8050</value> </property> <property> <name>hawq_rm_yarn_scheduler_address</name> <value>hdp2:8030</value> </property> <property> <name>hawq_rm_yarn_queue_name</name> <value>hawqque</value></property> <property> <name>hawq_rm_yarn_app_name</name> <value>hawq</value> </property>或者使用ambari的HAWQ -> Configs -> Advanced -> Advanced hawq-site 进行配置,如图8所示。
图8
表2包含了相关属性的描述。属性名称 | 描述 |
hawq_rm_yarn_address | YARN服务器的主机和端口号,与yarn-site.xml中的yarn.resourcemanager.address属性相同。 |
hawq_rm_yarn_scheduler_address | YARN调度器的主机和端口号,与yarn-site.xml中的yarn.resourcemanager.scheduler.address属性相同。 |
hawq_rm_yarn_queue_name | YARN中HAWQ使用的资源队列名称。 |
hawq_rm_yarn_app_name | YARN中HAWQ使用的应用名称。 |
表2
[gpadmin@hdp3 ~]$ hawq config -s hawq_rm_nresqueue_limit GUC : hawq_rm_nresqueue_limit Value : 128 [gpadmin@hdp3 ~]$手工编辑hawq-site.xml文件或使用ambari界面配置该参数,新值在HAWQ重启后生效。下面例子将最大资源队列数设置成50。
<property> <name>hawq_rm_nresqueue_limit</name> <value>50</value> </property>执行以下命令检查运行时的参数设置:
db1=# show hawq_rm_nresqueue_limit; hawq_rm_nresqueue_limit ------------------------- 128 (1 row)该参数不能在服务器启动后动态改变:
db1=# set hawq_rm_nresqueue_limit=50; ERROR: attempted change of parameter "hawq_rm_nresqueue_limit" ignored DETAIL: This parameter cannot be changed after server start. db1=#
db1=# create resource queue myqueue with (parent=‘pg_root‘, active_statements=20, db1(# memory_limit_cluster=10%, core_limit_cluster=10%); CREATE QUEUE db1=#一个父队列下的所有直接子队列的资源限制总和不能超过100%。例如,缺省的pg_default队列的memory_limit_cluster和core_limit_cluster为50%,刚刚建立的myqueue两者限制为10%,两个队列的限制总和是60%,此时无法再在pg_root下创建限制超过40%的资源队列。
db1=# create resource queue myqueue1 with (parent=‘pg_root‘, active_statements=20, db1(# memory_limit_cluster=50%, core_limit_cluster=50%); ERROR: the value of core_limit_cluster and memory_limit_cluster exceeds parent queue‘s limit, wrong value = 50% db1=#下面的语句在pg_root下创建一个名为test_queue_1的资源队列,内存和CPU核数最多为集群总量的40%,并指定资源过度使用因子为2:
db1=# create resource queue test_queue_1 with (parent=‘pg_root‘, db1(# memory_limit_cluster=30%, core_limit_cluster=30%, resource_overcommit_factor=2); CREATE QUEUE db1=#RESOURCE_OVERCOMMIT_FACTOR是一个可选属性,定义有多少资源能够被过度使用,缺省值为2.0,最小值为1.0。如果设置RESOURCE_OVERCOMMIT_FACTOR为3.0,同时将MEMORY_LIMIT_CLUSTER设置为30%,那么最大可能的资源分配为90%(30% * 3)。如果资源限制与RESOURCE_OVERCOMMIT_FACTOR相乘的结果值大于100%,采用100%。
[gpadmin@hdp3 ~]$ hawq config -s hawq_rm_force_alterqueue_cancel_queued_request GUC : hawq_rm_force_alterqueue_cancel_queued_request Value : on [gpadmin@hdp3 ~]$如果该参数设置为off,如果资源管理器发现新的队列定义与排队请求发生冲突,则取消ALTER RESOURCE QUEUE中指定的限制。
db1=# alter resource queue test_queue_1 with (memory_limit_cluster=40%,core_limit_cluster=40%); ALTER QUEUE db1=#以下语句将资源队列的最大活跃语句数由缺省的20改为50:
db1=# alter resource queue test_queue_1 with (active_statements=50); ALTER QUEUE db1=#
db1=# alter role wxy resource queue none; ALTER ROLE db1=#以下语句删除myqueue资源队列。
db1=# drop resource queue myqueue; DROP QUEUE db1=#
db1=# \x Expanded display is on. db1=# select rsqname, db1-# parentoid, db1-# activestats, db1-# memorylimit, db1-# corelimit, db1-# resovercommit, db1-# allocpolicy, db1-# vsegresourcequota, db1-# nvsegupperlimit, db1-# nvseglowerlimit, db1-# nvsegupperlimitperseg, db1-# nvseglowerlimitperseg db1-# from pg_resqueue db1-# where rsqname=‘test_queue_1‘; -[ RECORD 1 ]---------+------------- rsqname | test_queue_1 parentoid | 9800 activestats | 50 memorylimit | 40% corelimit | 40% resovercommit | 2 allocpolicy | even vsegresourcequota | mem:256mb nvsegupperlimit | 0 nvseglowerlimit | 0 nvsegupperlimitperseg | 0 nvseglowerlimitperseg | 0 db1=#也可以从pg_resqueue_status系统视图检查资源队列的运行时状态:
db1=# select * from pg_resqueue_status; rsqname | segmem | segcore | segsize | segsizemax | inusemem | inusecore | rsqholders | rsqwaiters | paused --------------+--------+----------+---------+------------+----------+-----------+------------+------------+-------- pg_root | 256 | 0.125000 | 72 | 72 | 0 | 0.000000 | 0 | 0 | F pg_default | 256 | 0.125000 | 36 | 72 | 0 | 0.000000 | 0 | 0 | F test_queue_1 | 256 | 0.125000 | 28 | 57 | 0 | 0.000000 | 0 | 0 | F (3 rows)表3描述了pg_resqueue_status视图中各字段的含义。
字段名称 | 描述 |
rsqname | HAWQ资源队列名称。 |
segmem | 每个虚拟段内存限额(MB)。 |
segcore | 每个虚拟段的CPU虚拟核数限额。 |
segsize | 资源队列能够为执行查询分配的虚拟段数。 |
segsizemax | 过度使用其它队列的资源时,资源队列可为执行查询分配的最大虚拟段数。 |
inusemem | 当前运行的语句使用的总内存(MB)。 |
inusecore | 当前运行的语句使用的总CPU虚拟核数。 |
rsqholders | 并发运行的语句数量。 |
rsqwaiters | 排队语句的数量。 |
paused | 指示在没有资源状态改变时,资源队列是否临时性暂停。‘F’表示否,‘T’表示是,‘R’表示资源队列发生了资源碎片问题。 |
表3
下面的语句查询所有资源队列的当前活动SQL:select usename, rsqname, locktype, objid, transaction, pid, mode, granted, waiting from pg_stat_activity, pg_resqueue, pg_locks where pg_stat_activity.procpid=pg_locks.pid and pg_locks.objid=pg_resqueue.oid;下面的语句查询所有资源队列的当前等待SQL:
select rolname, rsqname, pid, granted, current_query, datname from pg_roles, pg_resqueue, pg_locks, pg_stat_activity where pg_roles.rolresqueue=pg_locks.objid and pg_locks.objid=pg_resqueue.oid and pg_stat_activity.procpid=pg_locks.pid;
db1=# create role rmtest1 with login resource queue pg_default; CREATE ROLE db1=# alter role rmtest1 resource queue test_queue_1; ALTER ROLE db1=#下面的语句查看为角色分配的资源队列:
db1=# select rolname, rsqname from pg_roles, pg_resqueue db1-# where pg_roles.rolresqueue=pg_resqueue.oid; rolname | rsqname ---------+-------------- gpadmin | pg_default wxy | pg_default rmtest1 | test_queue_1 (3 rows)
db1=# select * from dump_resource_manager_status(1); dump_resource_manager_status ----------------------------------------------------------------------------------------- Dump resource manager connection track status to /tmp/resource_manager_conntrack_status (1 row)表4总结了该文件中的输出字段及其描述。
字段名称 | 描述 |
Number of free connection ids | 空闲的连接跟踪实例数量。HAWQ资源管理器支持最多65536个活动连接跟踪实例。 |
Number of connection tracks having requests to handle | 资源管理器已经接受但还没有处理的请求数量。 |
Number of connection tracks having responses to send | 资源管理器已经生成但还没有发送出去的响应数量。 |
SOCK | 请求的socket连接信息。 |
CONN | 请求的角色名称、目标队列和当前状态等信息。 prog=1表示连接建立 prog=2连接由用户注册 prog=3表示连接等待目标队列中的资源。 prog=4表示资源已经分配给连接。 prog>5表示失败或异常状态。 |
ALLOC | 会话相关信息,如请求的资源、会话级资源限制、语句级资源设置、按查询计划分片数估计的工作量等等。 |
LOC | 查询扫描HDFS的数据本地化信息。 |
RESOURCE | 已经分配的资源信息。 |
MSG | 最后收到的消息。 |
COMMSTAT | 当前socket通信缓冲区状态。 |
表4
db1=# select * from dump_resource_manager_status(2); dump_resource_manager_status -------------------------------------------------------------------------------------- Dump resource manager resource queue status to /tmp/resource_manager_resqueue_status (1 row)表5总结了该文件中的输出字段及其描述。
字段名称 | 描述 |
Maximum capacity of queue in global resource manager cluster | YARN资源队列最大配额。 |
Number of resource queues | HAWQ资源队列总数量。 |
QUEUE | 资源队列的基本结构信息,以及是否忙于为查询调度资源。 |
REQ | 等待队列的计数和状态。 |
SEGCAP | 虚拟段资源限额和可派发的虚拟段数量。 |
QUECAP | 原始资源队列配额,以及一个队列可以使用的集群资源的实际百分比。 |
QUEUSE | 资源队列使用信息。 |
表5
db1=# select * from dump_resource_manager_status(3); dump_resource_manager_status ------------------------------------------------------------------------------------ Dump resource manager resource pool status to /tmp/resource_manager_respool_status (1 row)表6总结了该文件中的输出字段及其描述。
字段名称 | 描述 |
HOST_ID | 识别的segment名称和内部ID。 |
HOST_INFO | segment配置的资源配额。GRMTotalMemoryMB和GRMTotalCore显示YARN报告的限额,FTSTotalMemoryMB和FTSTotalCore显示HAWQ中配置的限额。 |
HOST_AVAILABILITY | segment对于HAWQ容错服务(fault tolerance service,FTS)和YARN是否可用。 |
HOST_RESOURCE | 当前分配的和可用的资源,以及估算的负载计数器。 |
HOST_RESOURCE_CONTAINERSET | Segment持有的资源容器。 |
表6
标签:current 管理类 支持 blog ice 方案 磁盘空间 相同 最大
原文地址:http://blog.csdn.net/wzy0623/article/details/70314393