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.
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.
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.