Uber увеличил пропускную способность репликации данных в четыре раза — с 250 терабайт до 1 петабайта в сутки. Платформа HiveSync на базе Hadoop Distcp теперь обрабатывает сотни тысяч задач синхронизации между гибридными облачными и локальными дата-озёрами.
Потребность в масштабировании возникла из-за взрывного роста: количество датасетов выросло с 30 000 до 144 000 за год. Очереди репликации начали угрожать SLA, особенно во время миграции в облако — требовалась синхронизация активной и пассивной моделей дата-озёр.
Ключевые архитектурные изменения
Hadoop Distcp — фреймворк для параллельного копирования больших датасетов через MapReduce. Файлы разбиваются на блоки и обрабатываются Copy Mapper задачами в YARN-контейнерах.
Инженеры HiveSync перенесли ресурсоёмкие операции Copy Listing и Input Splitting с основного сервера на Application Master. Результат: конкуренция за HDFS-клиенты снизилась, латентность запуска задач сократилась на 90%.
Основные оптимизации:
- Распараллеливание Copy Listing и Copy Committer процессов
- Одновременная обработка нескольких файлов с сохранением порядка блоков
- Снижение p99-латентности листинга на 60%
- Сокращение максимальной латентности коммитов более чем на 97%
Микрооптимизация для мелких задач
Для задач менее 200 файлов или 512 МБ команда внедрила Hadoop Uber job. Copy Mapper задачи выполняются прямо в JVM Application Master, минуя создание контейнеров. Экономия: 268 000 запусков контейнеров ежедневно.
Более 50% всех Distcp-задач используют единственный mapper — эта оптимизация критична для общей производительности кластера.
Результаты масштабирования
Пропускная способность инкрементальной репликации выросла в пять раз. Во время облачной миграции HiveSync реплицировал более 300 петабайт данных без единого инцидента.
Планы развития:
- Дальнейшее распараллеливание операций установки прав файлов
- Перенос задач коммитов в Reduce-фазу
- Внедрение динамического throttling сетевого трафика
Практический вывод: Архитектурные принципы Uber применимы для любых систем с петабайтными нагрузками. При работе с большими данными каждая микрооптимизация даёт кратное улучшение производительности.