Архитектура Doris: FE и BE, компоненты и их роли
Apache Doris - высокопроизводительная OLAP-платформа для анализа больших данных с акцентом на скорость выполнения запросов и масштабируемость. В основе архитектуры лежат два главных слоя: Frontend (FE) и Backend (BE). FE отвечает за метаданные, синтаксический разбор и планирование запросов, а BE - за хранение данных, выполнение вычислений и управление ресурсами кластера. Этот раздел подробно распишет роли каждого компонента, механизмы взаимодействия, а также ключевые принципы архитектурного проектирования, которые обеспечивают устойчивость и производительность Doris в условиях роста объёмов данных и нагрузки.
Данные Doris структурированы так, чтобы разделение обязанностей между FE и BE отражало требования к масштабируемости и отказоустойчивости: FE концентрируется на конкатенации метаданных и оптимизации запросов, BE - на хранении, компоновке данных и параллельном исполнении. В рамках курса важно понять, как эти два слоя образуют единое целое: от загрузки данных до выдачи результатов пользователю, какие алгоритмы и протоколы применяются для эффективного обмена информацией и какие практики эксплуатации необходимы для поддержания предсказуемой производительности в продакшене.
- Обеспечение согласованности и целостности каталога манипуляций с данными через FE и BE.
- Принципы планирования запросов и параллельного выполнения на кластере BE.
- Механизмы загрузки данных, их верификации и подходы к управлению версиями.
- Примеры сценариев развертывания, масштабирования и мониторинга для устойчивого функционирования OLAP-аналитической платформы.
Общая архитектура Doris: FE и BE - обзор и ключевые принципы
Doris реализует архитектуру, разделяющую orchestration-слой метаданных и слой физического хранения. Frontend-сервисы (FE) образуют каталог базы данных: базы, таблицы, разделы (partitions), колонки и их типы, статистику и схемы доступа. Fe-узлы координируют изменение схемы, выполняют аутентификацию и авторизацию, собирают статистические данные и осуществляют часть логического и физического планирования запросов. Backend-сервисы (BE) отвечают за хранение файлов данных на дисках, репликацию, выполнение вычислений и управление ресурсами кластера. Это разделение позволяет горизонтально масштабировать Doris: можно увеличивать количество FE-узлов для расширения каталога и допуска к метаданным, а BE-узлы - для роста объема данных и пропускной способности обработки.
На концептуальном уровне архитектура Doris опирается на следующие принципы:
- Многоузловость FE и BE обеспечивает масштабируемость и отказоустойчивость. FE-узлы создают консолидированный каталог, один из FE-узлов может выполняться как лидер в группе для координации изменений каталога, остальные находятся в режиме резерва.
- Разделение чтения и записи metadata от хранения данных позволяет оптимизировать требования к производительности: FE - низкоуровневые консистентные операции над схемой и планом, BE - хранение и вычисления на наборах столбцов, что хорошо коррелирует с характером OLAP-запросов.
- Модель MVCC (многоверсий контроля параллелизма) и версияция таблиц в BE позволяют конкурентно выполнять запросы без блокировок на чтение, поддерживая актуальные данные и возможность отката к предыдущим версиям при обновлениях схем и данных.
Понимание границ ответственности FE и BE - первый шаг к эффективной эксплуатации Doris. FE не хранит bulk-данные: его задача - держать актуальный каталог, выдавать план выполнения и координировать загрузку и обновление данных через BE. BE, в свою очередь, управляет физическим расположением столбцов, их индексацией на уровне сегментов и сегментированного хранения, а также осуществляет параллельное исполнение запросов на множестве узлов.
Frontend (FE): роль, модули и жизненный цикл
FE обеспечивает основную часть логики, связанной с метаданными и оптимизацией. В реальном кластере Doris несколько FE-узлов образуют группу, где лидером может управлять консистентный механизм координации. Основная функциональность FE можно разделить на следующие блоки:
- Каталог метаданных: FE хранит полное описание баз данных, таблиц, колонок, их типов и ограничений. Каталог необходим для корректной маршрутизации запросов и соблюдения схемы совместимости.
- Аналитика и статистика: FE собирает статистику по таблицам и разделам, которая затем используется в планировании запросов и в оптимизаторе. Статистика включает маппинг по распределению данных, уникальность значений и распределение значений по диапазонам.
- Планирование и оптимизация запросов: FE строит логический план запроса, выполняет преобразование логического плана в физический план, применяя базовые эвристики и иногда правила упрощения. В современных версиях FE применяются подходы к стоимости выполнения (cost-based optimization, CBO) для выбора наиболее эффективной стратегии распараллеливания и применения операторов.
- Аутентификация и авторизация: FE осуществляет проверку учетных данных и применение политик доступа к объектам каталога.
- Управление загрузкой и изменениями схемы: любые DDL-операции (например, создание таблиц, изменение схемы столбцов, добавление партиций) сначала поступают к FE, где валидируются и затем распространяются на BE.
Как это реализуется на практике:
- В процессе выполнения запроса FE получает SQL-выражение, проводит парсинг и семантику, формирует дерево планирования и, при необходимости, запрашивает статистику у BE или использует локальные кэши. Затем FE передает план выполнения на BE, где он выполняется по частям в распределенном режиме.
- FE поддерживает управление жизненным циклом кластера, включая обновления версий, балансировку запросов между FE-узлами и координацию задач доступа к данным.
Важно подчеркнуть: FE не выполняет тяжелые вычисления над данными в больших объемах. Основной вычислительный цикл OLAP-операций происходит на BE, где данные физически расположены и обрабатываются параллельно.
Backend (BE): роль, хранение данных, исполнение
BE - это интеллектуальная и физическая «рабочая сила» Doris в отношении хранения и вычислений. Основные компетенции BE:
- Хранение столбцов и организация данных: Doris хранит данные в колоночном формате, оптимизированном под аналитические запросы. Данные организованы в структуру, обычно называемую tablet, которая состоит из сегментов и rowset-версий. Такая архитектура позволяет эффективно выполнять скользящие фильтры, агрегации и сжатие данных.
- Репликация и отказоустойчивость: BE-узлы обеспечивают репликацию сегментов между нодами, чтобы выдерживать выхода из строя узлов и сохранять целостность данных. Восстановление после сбоев и консистентность каталога происходят под контролем FE и координацией кластера.
- Выполнение запросов: BE осуществляет исполнение физического плана, включая векторизованный движок обработки, агрегации, фильтрацию и соединения между данными. Фактически BE реализует параллельное выполнение над несколькими узлами и группами узлов. Векторизированная обработка с использованием столбцового формата позволяет существенно ускорить выполнение аналитических запросов.
- Управление загрузкой данных: BE-узлы обрабатывают загрузку данных через механизмы загрузки (например, broker-загрузки из HDFS, S3 и пр.), а также поддерживают загрузку из внешних источников (в зависимости от версии Doris - через брокеров или прямую загрузку).
- Управление схемой и версиями: BE может работать с версиями данных и схем, поддерживая MVCC. Это обеспечивает возможность чтения актуальной версии данных в текущий момент времени при выполнении Long-running запросов и concurrent обновлениями.
- Оптимизация хранения: BE занимается компракцией, объединением rowset и уборкой устаревших данных, управлением уровнем хранения и распределением данных по сегментам и директориям.
Ключевые технические детали BE, которые полезно знать в контексте эксплуатации:
- Структура данных на диске: данные разбиты на сегменты, каждый сегмент содержит колоночные данные и метаданную информацию о версии и времени создания. Это обеспечивает эффективную компрекцию и компактное хранение.
- Версии и MVCC: каждая запись может существовать в нескольких версиях, что обеспечивает чтение консистентных снимков данных в условиях параллельной загрузки и запросов.
- Оптимизация исполнения: сеанс BE получает физический план, включает операторы сканирования, фильтрации, агрегаций и соединений, затем запускает их на данных, разделенных по узлам, с учетом локального кеширования и распределения нагрузки.
Взаимодействие FE и BE: планирование, обмен планами и транзакционный контекст
Связь FE и BE базируется на эффективной передаче планов и данных, а также на согласованности состояний метаданных и данных. Основные аспекты взаимодействия:
- Планирование и перераспределение задач: FE формирует логический план, затем преобразует его в физический план и отправляет на выполнение в BE. BE отвечает за исполнение параллельно на кластере узлов, с учетом локальных ресурсов и текущей загрузки. Такой подход позволяет использовать преимущества MPP-архитектуры: разделение данных по партициям и сегментам и параллельные вычисления.
- Метаданные и каталоги: FE обеспечивает консистентность каталога, распространяет схемы и изменения. BE-узлы читают и используют актуальные версии метаданных для корректной обработки данных и запросов.
- Транзакционная модель и консистентность: Doris поддерживает MVCC на уровне BE, что обеспечивает чтение стабильных снимков данных. FE синхронно или асинхронно координирует операции изменения схемы и загрузки данных, чтобы обеспечить согласованность каталога и соответствие между планом и данными.
- Протоколы и коммуникации: для взаимодействия FE и BE чаще всего применяются RPC-протоколы на базе BRPC. Это обеспечивает эффективную и безопасную коммуникацию между узлами кластера, включая аутентификацию, сжатие данных и управление очередями запросов.
Практический компромисс между производительностью и консистентностью достигается за счет:
- Эффективной маршрутизации запросов: FE учитывает географическое размещение и распределение данных, чтобы направлять запросы к BE-узлам, обладающим соответствующими данными и ресурсами.
- Управления планами: FE-логика позволяет выбрать оптимальный план на основе статистики и конфигураций кластера, минимизируя сетевые затраты и потери кеша.
- Мониторинга и адаптивности: система мониторинга позволяет автоматически перенаправлять запросы и перераспределять нагрузку между BE-узлами для поддержания заданной пропускной способности и минимальной задержки.
Инфраструктура, интеграции и эксплуатационные аспекты: загрузка данных, безопасность, мониторинг, масштабирование
Эта часть опишет практические аспекты эксплуатации Doris в реальном кластере.
- Интеграции и источники данных: Doris поддерживает загрузку данных из внешних хранилищ через механизм Broker (например, из HDFS или S3). Это упрощает сценарии периодической загрузки, обновления наборов данных и миграции между средами. В плане интеграций могут упоминаться также источники потоковых данных и некоторые коннекторы, обеспечивающие совместную работу с существующими пайплайнами.
- Масштабирование и балансировка: горизонтальное масштабирование достигается за счет увеличения числа BE-узлов и, при необходимости, FE-узлов. Балансировка нагрузки должна учитывать распределение данных по партициям и репликации, чтобы обеспечить устойчивое выполнение запросов даже при пиковых нагрузках.
- Безопасность и доступ: архитектура Doris поддерживает механизмы аутентификации и авторизации на уровне пользователей и ролей, а также шифрование сетевого трафика между FE и BE. Аудит-логи и контроль доступа помогают соответствовать требованиям комплаенса и внутренним политикам организации.
- Мониторинг и управлениесостоянием: метрически ориентированные подходы - Prometheus и внешние системы мониторинга - обычно применяются для отслеживания задержек планирования, загрузки CPU и памяти, пропускной способности сети, пропускной способности дисков, а также количества активных запросов и очередей выполнения. Визуализация в дашбордах позволяет быстро выявлять узкие места и планировать масштабирование.
- Обновления и миграции: стратегические обновления кластера должны учитывать совместимость схем, версий хранилища и планировщика. Ротации версий FE и BE, синхронизация конфигураций и минимизация прерываний в период апгрейда - важные аспекты устойчивого содержания кластера.
Пример сценария развертывания: кластер на FE и BE
Реализация оптимального кластера Doris требует осторожного планирования. Типичный сценарий включает:
- Развертывание группы FE-узлов (3-5 узлов) для обеспечения отказоустойчивости каталога и возможности горизонтального расширения каталога.
- Развертывание группы BE-узлов (5-10 узлов), которые обеспечивают хранение данных, параллельное выполнение и репликацию. Взаимная балансировка данных по сегментам и партициям должна быть настроена таким образом, чтобы нагрузка равномерно распределялась между узлами.
- Настройка загрузки данных через брокеры: периодическая загрузка данных из HDFS или S3, настройка расписания и обработка ошибок загрузки.
- Включение мониторинга и алертинга: сбор метрик через Prometheus или аналогичный инструмент, настройка пороговых значений и автоматических действий при перегрузке кластера.
- Обеспечение безопасности: настройка TLS для связи между FE и BE, ролей и политик доступа, аудита доступа к схемам и данным.
В реальном мире многие организации применяют гибридные схемы: наличие нескольких FE на одном дата-центре для высокой доступности каталога, а BE разнесены по нескольким площадкам для обеспечения отказоустойчивости хранения. Важна планируемая политика обновлений и минимизация простоя: предварительное тестирование изменений в тестовых окружениях, затем поэтапное внедрение в продакшн.
Key takeaways
- FE и BE образуют две логически разделенные, но тесно связанные части архитектуры Doris: FE управляет метаданными и планированием, BE осуществляет хранение и исполнение запросов.
- Распределенная архитектура FE и BE обеспечивает масштабируемость и отказоустойчивость: FE может масштабироваться за счет большего числа узлов каталога, BE - за счет большего числа узлов хранения и вычислений.
- Взаимодействие FE и BE строится на обмене планами выполнения через RPC-протоколы (BRPC). MVCC и версия данных позволяют выполнять чтение консистентно и без блокировок в условиях параллельных операций.
- Хранение данных в Doris реализовано через колоночный формат с сегментами и rowsets, что обеспечивает эффективную компрессию и быстрые сканирования. Репликация и управление версиями упрощают поддержание доступности.
- Мониторинг, настройка и загрузка данных являются краеугольными камнями эксплуатационной практики: Prometheus-метрики, загрузка через Broker-привязку к внешним хранилищам и тщательная настройка политики безопасности.
- Эффективная эксплуатация требует грамотной стратегии планирования обновлений, балансировки нагрузки и стабильного управления схемами - чтобы предотвратить простои и сохранить предсказуемую производительность.
- Архитектура Doris поддерживает гибкость внедрения в реальных условиях: можно сочетать более крупную группу FE для каталога и более крупную группу BE для хранения данных, а также настраивать конфигурации и размер кластера под конкретные требования бизнеса.
FAQ
- Какой из узлов отвечает за планирование запросов в Doris?
FE отвечает за парсинг, семантику и планирование запросов. Он формирует логический и физический план и отправляет его на BE для исполнения.
- Что обеспечивает консистентность данных в условиях параллельной загрузки и выполнения запросов?
Doris применяет MVCC на уровне BE, что позволяет читать стабильные версии данных и предотвращать конфликты между операциями загрузки и аналитическими запросами.
- Какие протоколы и технологии используются для связи между FE и BE?
Основной коммуникационный механизм - RPC на базе BRPC. Това обеспечивает эффективную передачу планов, управления данными и результатов между узлами кластера.
- Как Doris обрабатывает загрузку данных в таблицы?
Загрузка может осуществляться через механизм Broker, который читает данные из внешних хранилищ (например, HDFS, S3) и распределяет загрузку по BE-узлам. Это упрощает интеграцию существующих пайплайнов.
- Какие механизмы используются для масштабирования кластера?
Масштабирование достигается за счет горизонтального расширения FE и BE. FE - для каталога и планирования, BE - для хранения данных и параллельного исполнения. Балансировка должна учитывать распределение партиций и репликацию.
- Какие аспекты безопасности важны в архитектуре Doris?
Важно обеспечить аутентификацию и авторизацию в FE, шифрование сетевого трафика между FE и BE, аудит доступа к данным и схемам, а также контроль политик безопасности и ролей.
- Какие показатели мониторинга наиболее критичны для устойчивости кластера?
Задержки планирования, загрузка CPU и памяти, пропускная способность сети и дисков, число активных запросов, очереди выполнения и окно ошибок загрузки - все это критично для своевременного выявления узких мест.
- Какова роль MVCC при исполнении запросов?
MVCC позволяет читать актуальные снимки данных без блокировок, обеспечивая согласованность чтения во время параллельных процессов обновления и анализа.
- Что следует проверить перед обновлением Doris в продакшн?
Необходимо проверить совместимость схем, версию FE и BE, протестировать обновление в тестовом окружении, проверить конфигурации и провести план миграции без блокировок, чтобы минимизировать простои.
- Какие практики помогают обеспечить бесперебойную работу кластера в условиях роста данных?
Распределение данных по партициям и сегментам, настройка репликации, мониторинг и алертинг, тестирование обновлений в тестовом окружении, а также документирование процессов эксплуатации и восстановления после сбоев.




