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 资源管理的主要内容,如果未能解决你的问题,请参考以下文章