Отслеживание линии данных в масштабе: как эта автономная платформа ежедневно обрабатывает петабайты
7 августа 2025 г.В этой статье представлена автономная платформа управления данными, основанная наDolphinscheduler, решает такие проблемы, как зависимость задачи черные отверстия и узкие места масштабируемости. Внедряя динамическую компиляцию на основе YAML и автоматическое захват линии, платформа обеспечивает эффективное управление зависимостями задач и отслеживание данных. Это используетNeo4jГрафическая база данных для хранения линии, поддержка анализа воздействия второго уровня и локализации основной причины. Кроме того, благодаря саморазвитому высокоэффективному инструменту импорта данных эффективность передачи данных значительно улучшается.
Фон и проблемы
Под давлением обработки петабайт данных в день исходная система планирования столкнулась с двумя основными проблемами:
- Зависимость от задачи черные дыры: Зависимости от задач межсистемы (Hive/Tidb/Starocks) поддерживались вручную, что привело к тому, что время устранения неполадок превышало 30 минут.
- Масштабируемость узких мест: Планировщик с одной точкой не мог справиться с тысячами параллельных задач. Отсутствие механизма повторной попытки привело к тому, что показатели задержки данных превышают 5%.
Технологический стек
Компонент | Обоснование отбора | Преимущества производительности |
|---|---|---|
Планирование двигателя | Dolphinscheduler 2.0 | Распределенная пропускная способность распределения увеличилась в 3 раза |
Центр конфигурации | Go шаблон двигатель + yaml | Эффективность обновления обновления линии улучшилась на 70% |
Синхронизация данных | Саморазвитый инструмент для инструментов + Datax Dual Engine | Производительность импорта Starroccs достигает 2 ТБ/мин |
Мониторинг и оповещение | SMS + голосовой звонок | Задержка ответа предупреждения <5s |
Основная архитектура дизайн
Ключевые технические реализации:
- Динамическая компиляция YAML
type TaskDAG struct {
Nodes []Node `yaml:"nodes"`
Edges []Edge `yaml:"edges"`
}
func GenerateWorkflow(yamlPath string) (*ds.WorkflowDefine, error) {
data := os.ReadFile(yamlPath)
var dag TaskDAG
yaml.Unmarshal(data, &dag)
// Convert to DolphinScheduler DAG structure
return buildDSDAG(dag)
}
- Автоматический захват линии
- Планы выполнения перехватов SQL для анализа входных/вывода таблиц ввода/вывода
- Для задач, не являющихся SQL, использует крючки для захвата путей файлов
# StarRocks Broker Load Lineage Capture
def capture_brokerload(job_id):
job = get_job_log(job_id)
return {
"input": job.params["hdfs_path"],
"output": job.db_table
}
Решения для ключевых проблем
- План миграции с нулевой инцидентом
- Двойное сравнение: Запустить как старые, так и новые системы параллельно; Используйте инструмент DataDiff, чтобы проверить согласованность результатов
- Канарский релиз: Раздельный трафик по бизнес -единице поэтапно
- Механизм отката: Полная возможность отката в течение 5 минут
- Саморазвитый высокопроизводительный инструмент импорта
Сценарий | Инструмент | Сравнение TPS |
|---|---|---|
Улей → Старшие | Hive2sr | 4 ×+ улучшение по сравнению с данными данных |
Улей → DB | Hive2db | 4 ×+ улучшение по сравнению с данными данных |
Tidb → Hive | DB2Hive | 2× improvement over Sqoop |
Ключевые оптимизации:
- Пакетное представление с использованием бассейна Go's Coroutine
- Стратегия корректировки динамического буфера
func (w *StarrocksWriter) batchCommit() {
for {
select {
case batch := <-w.batchChan:
w.doBrokerLoad(batch)
// Dynamically adjust batch size
w.adjustBatchSize(len(batch))
}
}
}
Реализация управления линии
Данные линии хранятся в базе данных графика NEO4J, позволяя:
- Анализ воздействия: Найдите затронутую область изменения на уровне таблицы в течение секунд
- Анализ основной причины: Проследить источник проблемы в течение 30 секунд во время сбоев
- Аудит соответствия: Соответствует требованиям отслеживания данных GDPR
Выращивание производительности
Показатель | Перед миграцией | После миграции | Коэффициент улучшения |
|---|---|---|---|
Задача отказов | 8,2% | 0,1% | 98,8% |
Ежедневные задержки задач | 47 | <3 | 94% |
Время обслуживания линии | 10 часов/неделя | 0,5 часа/неделя | 95% |
Оригинал