Impala 资源管理

Posted

技术标签:

【中文标题】Impala 资源管理【英文标题】:Impala Resource Management 【发布时间】:2017-09-15 16:14:09 【问题描述】:

准入控制嵌入在每个 impalad 守护程序中,并通过 statestore 服务进行通信。 impalad 守护进程确定查询是立即运行还是排队。 但是,如果突然的请求流导致并发运行的查询多于预期,则整体 Impala 内存限制和集群级别的 Linux cgroups 机制将作为硬限制,以防止内存过度分配。当查询达到这些限制时,Impala 会取消查询。

这是否意味着在单个 Impala 守护程序级别或集群级别强制实施 Impala 资源限制?

【问题讨论】:

【参考方案1】:

答案是两者兼而有之。每个 impalad 守护程序都有自己的 MEM_LIMIT。超过它将导致查询被取消。准入控制池在集群级别工作,即使网关守卫(决定查询应该运行还是排队)位于每个 impalad 级别,即使这些 impalad 根据集群级别的池资源做出准入决策。这就是为什么当有大量查询发送到不同的 impalad 实例时,impalad 守护进程可能会接受比它们应有的查询更多的查询,因为它们当时无法获得最新的集群资源使用信息。 CGroup 限制不会导致查询被取消。它决定了在发生 CPU 争用时 impalad 应该获得的 CPU 百分比。

【讨论】:

每个 impalad 守护进程都有自己的 MEM_LIMIT。这是 env.sh 中设置的 MEM_LIMIT 还是不同? 不确定您的设置,但它作为 -mem_limit 选项传递给 impalad。如果您使用 Cloudera Manager,您可以搜索 MEM_LIMIT 并将其设置在那里。

以上是关于Impala 资源管理的主要内容,如果未能解决你的问题,请参考以下文章

在多租户 Hadoop 集群中管理 impala 资源的最佳方法是啥

Impala源码之资源管理与资源隔离

Impala源码之资源管理与资源隔离

Impala动态资源池及放置规则使用

Impala动态资源池及放置规则使用

如何启用Impala的动态资源池