Why it matters

Every production Impala cluster needs admission control. Without it, one bad user or one bad application takes down interactive query performance for everyone.

Advertisement

The architecture

Admission control is configured via pools defined in fair-scheduler.xml (reused from YARN). Each pool has: max concurrent queries, max memory across all queries in the pool, max queue length, per-user query limits.

Incoming queries are routed to a pool based on client-provided pool name (or defaulted). If the pool has capacity, the query runs. If not, it queues.

Impala admission control flowPool configconcurrency + memIncoming querymatched to poolAdmission decisionrun or queueQueues queries under load rather than overloading the cluster
Admission control per pool.
Advertisement

How it works end to end

Memory limit per query is set explicitly or estimated from stats. The admission controller sums estimated memory across active queries in the pool and only admits if there's headroom.

Queued queries wait until active queries complete. Timeouts abort queries that wait too long.

Statestore synchronizes admission state across Impalads. Every Impalad has the same view of pool utilization.