For a multi-tenant cluster, its overall resource utilization is a KPI that measures how effectively its resource is utilized against its availability or capacity. To better improve the overall resource utilization of the cluster,
- At cluster layer, we leverage the capabilities, such as Capacity Scheduler, of resource scheduling management services, such as YARN and K8s.
- At application layer, we’d be better to acquire and release resources according to the real workloads.
The Big Contributors Of Resource Waste
- The time to wait for the resource to be allocated, such as the scheduling delay, the start/stop cost.
- A longer time-to-live(TTL) for allocated resources can significantly reduce such time costs within an application.
- The time being idle of the resource.
- A shorter time to live for allocated resources can make all resources in rapid turnarounds across applications.
TTL Types In Kyuubi Engines
- Engine TTL
- The TTL of engines describes how long an engine will be cached after all sessions are disconnected.
- Executor TTL
- The TTL of the executor describes how long an executor will be cached when no tasks come.
Configurations
Engine TTL
Key | Default | Meaning | Type | Since |
---|---|---|---|---|
kyuubi.session.engine .check.interval |
PT5M |
The check interval for engine timeout |
duration |
1.0.0 |
kyuubi.session.engine .idle.timeout |
PT30M |
engine timeout, the engine will self-terminate when it’s not accessed for this duration. 0 or negative means not to self-terminate. |
duration |
1.0.0 |
The above two configurations can be used together to set the TTL of engines. These configurations are user-facing and able to use in JDBC urls. Note that, for connection share level engines that will be terminated at once when the connection is disconnected, these configurations not necessarily work in this case.
Executor TTL
Executor TTL is part of functionality of Apache Spark’s Dynamic Resource Allocation.