Oushu DB 管理指南之虚拟集群(上)

简介: OushuDB从4.4.0.0版本开始支持虚拟集群来管理节点及其队列。虚拟集群可以使用户的资源使用限定在若干节点上,从而达到合理分配资源并隔绝错误。目前所有关于虚拟集群的元数据信息记录在系统表pg_vcluster中。

image.png

虚拟集群
OushuDB从4.4.0.0版本开始支持虚拟集群来管理节点及其队列。虚拟集群可以使用户的资源使用限定在若干节点上,从而达到合理分配资源并隔绝错误。目前所有关于虚拟集群的元数据信息记录在系统表pg_vcluster中。

1. 特殊虚拟集群

OushuDB在初始化时会自动创建名为vc_default的虚拟集群,此虚拟集群不可删除,并自动配有vc_default.pg_root和vc_default.pg_default资源队列。OID为10的role(通常为gpadmin)会自动绑定vc_default.pg_default。

2. 虚拟集群初始化

vc_default可以在初始化时获得节点。默认情况下,所有slaves文件下的节点都会自动加入vc_default。用户同样可以在hawq init的时候指定vcluster_config,来自定义节点。更具体的,vcluster_config为一个指向虚拟集群配置文件的文件路径,而虚拟集群配置文件的格式如下:每个条目一行且每个条目由两列构成,第一列为节点域名,第二列为虚拟集群名,若第二列为空则视为vc_default,例如:

seg1
seg2 vc1
seg3 vc2
seg4 vc2

则vc_default含有seg1节点,同时创建vc1包含seg2,创建vc2包含seg3和seg4
此外初始化时还会将hash_table_bucket_number按照节点个数平均分配给各个虚拟集群。

3. 创建虚拟集群

CREATE VCLUSTER <name> [
  WITH (SEGMENTS='<hostnames>' | SEGMENTFILE='<hostfile>'
        [, <VCPROPERTY>=<value> [, ...] ])
]
where <VCPROPERTY>=<value> is:
   <hash_table_bucket_number> = <integer>
|  <max_nvseg_perquery> = <integer>
|  <max_nvseg_perquery_perseg> = <integer>
|  <magma_hash_table_nvseg_perseg> = <integer>

其中SEGMENTS=’’是一组节点的域名,可由’,’分割,例如:SEGMENTS=’seg1,seg2,seg3’。 每个被分割的域名可以支持如下的扩展匹配:匹配区域由’[]’定义,模式内由’,’分割,利用’..’来进行循环。 具体来讲模式内每个条目有如下三种形式:
● X 即为 X
● X..Y 表示从X到Y(闭区间)
● X..Y..S 表示从X到Y(闭区间),步长为S
其中X,Y,S均为整数,举例:

192.168.1.[1,2,3..4,5..10..2], hawq[1..2]

被解析为:

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.7
192.168.1.9
hawq1
hawq2

SEGMENTFILE=’’是一个包含segment域名的文件位置,文件内容的语法和SEGMENT语法一致,且支持’n’分隔,支持空行
每一个新创建的虚拟集群会自动创建两个资源队列,加入新虚拟集群的名字为newvc,则资源队列名为newvc.pg_root,newvc.pg_default。
需要注意的是DDL中SEGMENTS和SEGMENTFILE里面的内容全是域名。即使写成IP也会被当成域名,值得庆幸的是IP作为域名会被解析成自身,但不幸的是会让我们产生歧义。更具体地,假设域名localhost对应IP为127.0.0.1,我们不能同时加入localhost和127.0.0.1,因为他们IP冲突。
另外,我们不会验证segments和segmentfile中的域名是否真实有效,也就是说即使你随便胡编乱造节点的域名,vc也会把它加入其中,只是这个节点永远不可用。通常情况下这不会发生问题,但有时他会触发以下三种错误:
● 申请资源:VCluster %d has %d of %d segments %s unavailable, exceeds %.1f%% defined in GUC hawq_rm_rejectrequest_nseg_limit.
● 申请资源配额:VCluster %d has %d of %d segments %s unavailable, exceeds %.1f%% defined in GUC hawq_rm_rejectrequest_nseg_limit.
● 日志中出现:RM: Failed to fix MemCoreRatio: Expects at least %d segments available before first time fixing cluster memory to core ratio, currently %d available segments are ready.
这是因为虚拟集群中又太多的虚假节点,导致超过阈值从而失败。
此外一种容易出现问题的情况是:你试图加入127.0.0.1,但是手误写成了127.00.1,这不会失败,但远不是你所期望的。当然如果你明确知道加入的节点已经发送过心跳,可以通过pg_segment_configuration来确认其信息是否正确。

目录
相关文章
|
人工智能 算法 安全
智能灾害预警系统:自然灾害的早期检测与响应
【10月更文挑战第26天】智能灾害预警系统利用大数据、物联网、云计算和人工智能等技术,实现对自然灾害的早期检测与预警。本文介绍其技术原理、应用现状及未来发展趋势,探讨如何提高预测精度、促进跨学科融合创新,推动灾害风险管理的科学化和社会化进程。
1671 2
|
7月前
|
资源调度 Kubernetes 调度
从单集群到多集群的快速无损转型:ACK One 多集群应用分发
本文介绍如何利用阿里云的分布式云容器平台ACK One的多集群应用分发功能,结合云效CD能力,快速将单集群CD系统升级为多集群CD系统。通过增加分发策略(PropagationPolicy)和差异化策略(OverridePolicy),并修改单集群kubeconfig为舰队kubeconfig,可实现无损改造。该方案具备多地域多集群智能资源调度、重调度及故障迁移等能力,帮助用户提升业务效率与可靠性。
|
6月前
|
存储 机器学习/深度学习 边缘计算
OSS生命周期管理自动化:7天冷归档+30天低频访问的合规存储策略(结合企业级数据分级场景)
在数据爆炸增长背景下,企业面临存储成本攀升与合规要求升级的双重挑战。本文以金融与医疗行业实践为例,深入解析如何通过OSS自动化生命周期管理实现数据分级存储优化。内容涵盖数据热力模型分析、存储类型成本对比、状态机驱动的自动降级策略、合规性保障机制及机器学习动态预测方案,最终达成存储成本下降64.3%、合规审计通过率提升至98.7%的实战效果。适合关注云存储架构优化、数据治理与合规管控的技术决策者参考。
221 0
|
机器学习/深度学习 XML 分布式计算
大数据的概念
【10月更文挑战第16天】
684 4
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
784 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
机器学习/深度学习 人工智能 中间件
解读顺网算力与AI,破局AIGC落地“最后一公里”
解读顺网算力与AI,破局AIGC落地“最后一公里”
|
NoSQL 网络协议 Redis
Nomad 系列 -Nomad 网络模式
Nomad 系列 -Nomad 网络模式
|
Kubernetes 测试技术 数据安全/隐私保护
如何使用Vcluster实现Kubernetes中的多租户
如何使用Vcluster实现Kubernetes中的多租户
525 0
|
弹性计算 监控 网络协议
记一个诡异的TCP挥手乱序问题
tcp四次挥手是超经典的网络知识,但是网络中的异常状况千奇百怪,说不定会“偷袭”到标准流程的盲区。最近笔者遇到了一个罕见的挥手乱序问题,经过对内核代码的分析和试验,最后终于找到了原因,角度可谓刁钻。本文从技术视角,将排查过程记录下来,既是对整个过程的小小总结,将事情彻底完结掉,也是对tcp实现的一些细节的学习记录。
138047 11
|
存储 安全 测试技术
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
网络奇谭:虚拟机中的共享、桥接与Host-Only模式解析
298 0