Prerequisites Capacity Planning
Capacity Planning
Control Plane
A minimum of 3 nodes is required for Kubernetes control-plane functionality.
Installed Software Scope
The following applications drive capacity requirements:
- Apache Spark - batch and streaming compute
- Trino - distributed SQL query engine
- JupyterHub - interactive notebook sessions
Concurrency and Data Volume Targets
Collect the following metrics for your environment before sizing nodes:
Metric | What to Measure |
Concurrent Spark jobs | Peak and average running jobs |
Concurrent Trino queries | Maximum sustained query load |
Active JupyterHub sessions | Simultaneous notebook users |
Data scan volume | Terabytes scanned per hour/day |
Processing throughput | Required gigabytes per second |
Memory vs Disk Spill
In-Memory Processing
Application | Recommendation |
Spark | Allocate 60--70% of executor memory for direct processing |
Trino | Size memory pools to match anticipated query complexity |
JupyterHub | Set per-user memory limits (typically 2 GB -- 16 GB) |
Disk Spill Configuration
- Use Local SSD storage for shuffle spill operations.
- NVMe SSDs with >= 50,000 IOPS are recommended.
- Provision 2--3x the expected maximum spill volume per node.
- Use multiple mount points in a JBOD configuration.
Storage Infrastructure
Local Disk
Requirement | Specification |
Type | NVMe SSD (mandatory for shuffle operations) |
Mount protocol | JBOD -- /mnt/disk1, /mnt/disk2, etc. |
Persistent Storage
Use existing object storage (S3, GCS, Azure Blob) as the data lake repository. This is also required for hosting Spark History Server event logs.
Scaling Strategies
Dynamic Scaling
- Kubernetes Cluster Autoscaler for automated node-level adjustments.
- Spark Dynamic Allocation for adaptive executor provisioning.
Static Scaling
- Fixed node count for environments with predictable workloads.
- Lower operational complexity and more accurate cost forecasting.
Network Bandwidth
Path | Minimum | Recommended |
Inter-node communication | 25 Gbps | 100 Gbps |
Storage network | Dedicated high-bandwidth link to object storage | -- |
Consider segregating data-plane and control-plane traffic onto separate networks.
