2017-05-04 35 views
0

我想在会话级别来调整低于Hawq配置的查询 -虚拟分段存储器/核心分配

SET hawq_rm_stmt_nvseg = 40; 
SET hawq_rm_stmt_vseg_memory = '4gb'; 

Hawq是纺丝的资源管理器运行与

Minumum Hawq queue Used capacity 5% 
hawq_rm_nvseg_perquery_perseg_limit = 6 
hawq_rm_min_resource_perseg = 4 

当运行我的查询,我看到只有30个容器被启动。它不应该是40个容器(每个虚拟段1个内核)?请帮我理解虚拟段内存或内核是如何分配的?

回答

1

hawq_rm_stmt_nvseg是配额限制。默认情况下,这是0.因此,将其设置为40不会增加vsegs的数量,而是限制它。

hawq_rm_nvseg_perquery_perseg_limit控制可以创建多少个vsegs,并且您使用的默认值是6.所以vsegs的数量应该是6 *节点数。如果你看到30,那么你可能有5个节点。

如果您使用的是随机分布的表格,则可以增加hawq_rm_nvseg_perquery_perseg_limit以获得更多的vsegs来处理查询。

如果您使用的是散列分布表,您可以使用更大的bucketnum值重新创建表,当您查询它时将为您提供更多的vsegs。

+0

节点数量(物理HAWQ段)为10.理想情况下,它应该是40个vsegs(4个物理段),产生40个纱线容器,但我看到30个纱线容器。我在这里错过了什么? –

+0

我注意到你已经将hawq_rm_min_resource_perseg设置为4,所以4 * 10 = 40。vsegs的数量是动态的,并基于被访问的表。一张小桌子不需要使用更多的vsegs。纱线整合的更多细节:http://hdb.docs.pivotal.io/220/hawq/resourcemgmt/YARNIntegration.html –