Бенчмаркинг и финальный отчёт
Третий и четвёртый deliverables: запуск бенчмарков и написание финального отчёта. Здесь вы проверяете свои решения из storage layer design на реальных данных — и объясняете результаты.
Бенчмаркинг без методологии — маркетинг, а не инженерия. Прежде чем запускать тесты, перечитайте методологию бенчмаркинга из Модуля 17. Каждый benchmark должен иметь: hypothesis, controlled variables, measurement protocol, reproducibility guarantee.
Docker Lab: capstone-benchmarks
Capstone-benchmarks — Docker-based lab для сравнения форматов в контролируемой среде. Lab включает: data generator, write benchmarks, read benchmarks, merge benchmarks, compression benchmarks.
docker compose up
docker-compose.yml запускает: (1) MinIO — S3-compatible object storage, (2) Spark — compute engine для read/write, (3) Benchmark runner — Python скрипт с PySpark, (4) Jupyter — для interactive exploration. Всё в Docker — reproducible на любой машине.MinIO (S3)
MinIO — S3-compatible object storage. Эмулирует AWS S3 API. Все данные пишутся в MinIO buckets. Endpoint: http://minio:9000. Access/secret keys: minioadmin/minioadmin.Spark 3.5
Apache Spark 3.5 с Iceberg, Delta Lake, Hudi support. PySpark client. Configured с Iceberg catalog (REST catalog на MinIO). Memory: 4 GB per executor (настраивается).Benchmark Runner
Benchmark runner — Python + PySpark. Генерирует test data, запускает write/read/merge тесты, собирает метрики (time, bytes, rows), выводит отчёт. Configurable через benchmark_config.yaml.Benchmark Results (JSON + Markdown)
Results: JSON + Markdown отчёт. Метрики: write throughput (rows/sec, MB/sec), read throughput (rows/sec, MB/sec), compression ratio, merge latency (sec per batch), file count, total size. Сравнение: Parquet vs ORC, Snappy vs Zstd, CoW vs MoR.Запуск Lab
# Clone capstone-benchmarks lab
git clone https://github.com/your-org/capstone-benchmarks.git
cd capstone-benchmarks
# Start environment
docker compose up -d
# Run all benchmarks
docker compose exec spark ./run_benchmarks.sh
# View results
docker compose exec spark cat /results/report.md
Если Docker lab недоступен, используйте локальный PySpark (без MinIO). Инструкции в README capstone-benchmarks. Ключевые бенчмарки можно запустить с local filesystem вместо S3. Результаты будут отличаться (local I/O vs S3 API), но relative comparison между форматами сохраняется.
Benchmarking Dimensions
Пять измерений бенчмарка — из методологии:
Write Throughput
Write Throughput — скорость записи данных. Для bronze: append throughput (rows/sec при streaming ingestion). Для silver: merge throughput (rows/sec при CoW merge). Measurement: time to write N rows × row_size.Scan Speed
Scan Speed — скорость полного сканирования. Для gold: full table scan с aggregation. Measurement: time to SELECT COUNT(*), SUM(total), AVG(price) FROM table WHERE date BETWEEN ... GROUP BY region.Compression Ratio
Compression Ratio — сжатие данных. Для всех слоёв: uncompressed size / compressed size. Measurement: size on disk vs logical size. Vary: codec (Snappy, Zstd levels), encoding (dictionary, delta, RLE).Merge Latency
Merge Latency — время upsert операции. Для silver: MERGE INTO target USING source ON key = key. CoW: full file rewrite. MoR: delta append. Measurement: time per merge batch.Predicate Pushdown
Predicate Pushdown — эффективность фильтрации на уровне формата. Measurement: bytes read with/without pushdown. Effective pushdown = read only matching row groups / stripes.Test Data: генерация
Lab генерирует данные, имитирующие наш e-commerce сценарий:
Controlled Variables
Каждый benchmark фиксирует все переменные кроме той, которую измеряем:
Если у вас медленная машина — уменьшите dataset size (1M вместо 10M). Relative comparison между форматами сохраняется при уменьшении данных. Absolute numbers изменятся, но ratios останутся стабильными. См. scaling considerations из Модуля 17.
Интерпретация результатов
Benchmark runner выдаёт JSON с метриками. Ваша задача — интерпретировать:
Raw Benchmark Results (JSON)
Raw results: JSON файл с метриками per test. Каждый test: {name, format, codec, rows, time_sec, bytes_written, bytes_read}. Множество тестов — нужна структура для анализа.Типичные findings
На основе реальных бенчмарков e-commerce data (публичные отчёты, community benchmarks):
Format Selection Report
Финальный deliverable — format selection report. Документ для “архитектурного комитета” (воображаемого):
- Executive Summary
- Requirements
- Design Decisions
- Benchmark Results
- Operational Plan
- Risks & Mitigations
Report Writing Guidelines
Operational Plan
Архитектура — это 50% работы. Остальные 50% — операционный план:
Peer Review Checklist
Используйте этот checklist для self-review вашего capstone-проекта перед финальной “презентацией”:
Подведение итогов курса
Этот capstone-проект — не экзамен. Это инструмент: вы прошли путь от теории (побайтовый разбор форматов) через сравнение (decision framework) к практике (проектирование реальной системы). Знания из 17 модулей — от Parquet row groups до Iceberg partition evolution — теперь связаны в единую инженерную картину.
M01-M07: Format Internals
Модули 01-07: основы форматов. Parquet, ORC, Avro, Protobuf, CSV/JSON, Arrow. Побайтовый разбор каждого формата. Результат: понимание внутреннего устройства.M08-M10: Encoding, Compression, Schema
Модули 08-10: cross-cutting concerns. Encoding, compression, schema evolution. Применимо ко всем форматам. Результат: понимание оптимизаций и совместимости.M11-M14: Table Formats
Модули 11-14: table formats. Delta Lake, Iceberg, Hudi, Paimon. ACID, transactions, metadata management. Результат: понимание lakehouse architecture.M15-M16: Emerging Formats
Модули 15-16: emerging formats. Lance, Vortex, Nimble, F3. Next-generation approaches. Результат: awareness of future directions.M17: Decision Framework
Модуль 17: decision framework. Workload archetypes, benchmarking methodology, table format selection, migration strategies, case studies. Результат: framework для принятия решений.M18: Capstone (вы здесь)
Модуль 18: capstone. Применение всех знаний к реальному сценарию. Ingestion + storage + benchmarking + report. Результат: практический опыт end-to-end design.Форматы хранения — активно развивающаяся область. Iceberg v3, Delta 4.0, новые codecs, Arrow-native execution — всё это меняется. Но фундаментальные принципы (columnar vs row, encoding, compression, schema evolution, ACID semantics) остаются. Курс дал вам framework для анализа любого нового формата — не только тех, что мы разобрали.
Capstone-проект завершён. Используйте glossary и troubleshooting как справочники при работе с форматами в production.