Evaluate lakehouse architectures through the workloads they execute.
Lakebench runs defined data workloads against configurable lakehouse architectures on Kubernetes. It measures how the assembled system behaves, where time and resources go, and how results change when the architecture or operating conditions change. It produces measurements and supporting context, not a verdict on the best architecture or its production suitability.
An experiment combines four elements:
- Workload: the data, processing, queries and outcomes that exercise the architecture.
- Architecture: the composition of processing engines, table formats, catalogs and query engines.
- System: the Kubernetes, compute, network and storage environment.
- Execution conditions: scale, resource allocations, execution mode and other controls.
Workload x Architecture x System x Execution conditions -> Evidence
Lakebench deploys the components, generates data, runs the workload, collects measurements and writes reports.
- Customer 360: a retail analytics workload. Customer interactions are ingested, validated, transformed, aggregated and queried.
- Financial Crime / AML: transaction-monitoring over synthetic financial transactions: ingestion, transformation, detection and analytical queries. It evaluates how the architecture executes the workload, not the effectiveness of a production AML system.
pip install lakebench-k8sBinaries that need no Python are on GitHub Releases.
lakebench init --endpoint http://your-s3-endpoint:80 # writes lakebench.yaml
export LAKEBENCH_S3_ACCESS_KEY=...
export LAKEBENCH_S3_SECRET_KEY=...
lakebench admin install --component all lakebench.yaml # once per cluster
lakebench plan lakebench.yaml # what the run needs (read-only)
lakebench run lakebench.yaml --generate --yes # deploy, generate, run workload
lakebench report lakebench.yaml # print results
lakebench destroy lakebench.yaml # remove what this deployment createdinitwrites a minimal configuration.--recipe <name>selects the architecture;--workload financialselects the AML workload.lakebench config recipeslists the 11 supported recipes.admin installplaces shared cluster components (Spark Operator, Stackable operators for Hive recipes, scratch StorageClass). Run once per cluster.planchecks whether the cluster has room for the workload. It changes nothing.--generatefills the bronze bucket with synthetic data. Without it,runrefuses (exit 4).--yesletsrundeploy the namespace and components. Without it, runlakebench deployfirst.destroyremoves only what this deployment created. It asks for confirmation unless--yesis passed.
The full walkthrough is Getting Started.
Depending on the workload, a run records outcomes and correctness, stage timings, throughput, query or detection performance, storage I/O, and compute and memory use. Results describe behaviour under the conditions of that run. Compare runs only when their execution conditions and workload semantics match.
lakebench report prints a summary and the path to the HTML report.
--render writes a fresh copy; --format json or csv is for scripts.
Lakebench does not provision the Kubernetes cluster or the storage.
Host tooling:
kubectlandhelmon PATH.
Kubernetes:
- Kubernetes 1.26+.
- Permission to create a namespace.
Storage:
- S3-compatible object storage with an endpoint URL, access key and secret
key. Validated on FlashBlade and Garage; expected to work on AWS S3,
MinIO and other S3-compatible stores.
lakebench config storagechecks yours.
Cluster capacity:
- Room for the workload. Scale 1 batch needs about 41 cores and 544 GB;
requirements grow with scale and differ by workload and mode.
lakebench planchecks the cluster and Sizing lists every combination.
Prerequisites lists every check and its fix.
- Getting Started: install, first run, teardown
- Documentation index: full navigation
- Configuration: every YAML field
- CLI Reference: every command and flag
- Workloads: Customer 360 and AML
- Recipes: supported architectural compositions
- Results & Comparison: measurements and interpretation
Apache 2.0