Перейти к содержимому
Последнее обновление

Управление вычислительными группами: руководство по созданию, предоставлению прав, переключению и масштабированию

В архитектуре с разделением вычислений и хранения один или несколько вычислительных узлов (BE) можно объединить в вычислительную группу. В этом документе описан полный набор операций управления вычислительными группами: просмотр, добавление, предоставление прав, настройка группы по умолчанию, переключение и масштабирование.

Примечание о версии

В версиях до 3.0.2 вычислительные группы назывались вычислительными кластерами.

Сценарии использования вычислительных групп​

В архитектуре с несколькими вычислительными группами оператор USE @<compute_group_name> позволяет направлять определённые рабочие нагрузки в заданную вычислительную группу, обеспечивая физическую изоляцию разных типов нагрузок.

В следующих сценариях предполагается наличие двух вычислительных групп: C1 и C2.

СценарийОписаниеПорядок действий
Изоляция между операциями чтенияДва крупных запроса выполняются на отдельных вычислительных узлах, избегая конкуренции за ресурсы CPU и памятиДля запроса 1 используется USE @c1; для запроса 2 используется USE @c2
Изоляция чтения и записиУстраняет конкуренцию за ресурсы между загрузкой данных и запросами; C1 может обращаться к данным, только что загруженным в C2Для запросов используется USE @c1; для загрузки данных используется USE @c2
Изоляция между операциями записиЧастые небольшие загрузки и загрузки крупными пакетами выполняются раздельно, чтобы не мешать друг другуДля небольших загрузок используется USE @c1; для пакетных загрузок используется USE @c2
Примечание

Описанная выше изоляция распространяется на вычислительные ресурсы, такие как CPU и память. Чтение кеша соседних узлов включено по умолчанию, поэтому при отсутствии данных в локальном кеше запрос из одной вычислительной группы может читать File Cache узла BE из другой группы. Если настроено заполнение кеша между группами, запрос также может поручить другой группе загрузить для него данные из объектного хранилища. Это ослабляет изоляцию сети, дисков и кеша между вычислительными группами. Если требуется строгая изоляция, отключите чтение кеша соседних узлов на узлах BE.

Механизм выбора вычислительной группы по умолчанию​

Если пользователь явно не задал вычислительную группу по умолчанию, система автоматически выбирает группу, которая соответствует следующим условиям:

  • В вычислительной группе есть хотя бы один работающий вычислительный узел.
  • У текущего пользователя есть право USAGE_PRIV на эту вычислительную группу.

В рамках одного сеанса вычислительная группа по умолчанию остаётся неизменной, пока пользователь явно не сменит её. Между сеансами система может автоматически сменить вычислительную группу по умолчанию при возникновении любого из следующих условий:

Условие переключенияВсегда вызывает переключение
Пользователь теряет право USAGE_PRIV на ранее выбранную вычислительную группуДа
Добавлена или удалена вычислительная группаДа
В ранее выбранной вычислительной группе больше нет работающих вычислительных узловВозможно

Просмотр всех вычислительных групп​

Назначение: просмотр всех вычислительных групп в текущем репозитории.

Команда:

SHOW COMPUTE GROUPS;

Описание: возвращаемые результаты зависят от уровня прав пользователя:

  • Пользователи с правом ADMIN могут просматривать все вычислительные группы.
  • Обычные пользователи могут просматривать только те вычислительные группы, на которые у них есть право USAGE_PRIV.
  • Если у пользователя нет права USAGE_PRIV ни на одну вычислительную группу, результат будет пустым.

Добавление вычислительной группы​

Предварительные требования: необходимо право OPERATOR (право на управление узлами). По умолчанию оно есть только у учётной записи root. Его можно предоставить другим учётным записям с помощью команды GRANT. Подробнее см. в разделе Управление правами.

Назначение: добавление узла BE и назначение его вычислительной группе.

Команда с указанием вычислительной группы:

ALTER SYSTEM ADD BACKEND 'host:9050' PROPERTIES ("tag.compute_group_name" = "new_group");

Команда с использованием вычислительной группы по умолчанию: если вычислительная группа не указана, узел по умолчанию присоединяется к default_compute_group:

ALTER SYSTEM ADD BACKEND 'host:9050';

Подробнее см. в справочнике SQL по ADD BACKEND.

Предоставление доступа к вычислительной группе​

Предварительные требования: у текущего пользователя есть право ADMIN или он входит в роль admin.

Назначение: предоставление указанному пользователю права USAGE_PRIV на вычислительную группу.

Команда:

GRANT USAGE_PRIV ON COMPUTE GROUP {compute_group_name} TO {user};

Отзыв доступа к вычислительной группе​

Предварительные требования: у текущего пользователя есть право ADMIN или он входит в роль admin.

Назначение: отзыв у указанного пользователя права USAGE_PRIV на вычислительную группу.

Команда:

REVOKE USAGE_PRIV ON COMPUTE GROUP {compute_group_name} FROM {user};

Настройка вычислительной группы по умолчанию​

Настройка для текущего пользователя​

Предварительные требования: у текущего пользователя уже есть право USAGE_PRIV на целевую вычислительную группу.

SET PROPERTY 'default_compute_group' = '{clusterName}';

Настройка для другого пользователя​

Предварительные требования: у текущего пользователя есть право Admin.

SET PROPERTY FOR {user} 'default_compute_group' = '{clusterName}';

Просмотр вычислительной группы по умолчанию​

Просмотр вычислительной группы по умолчанию для текущего пользователя. Значение default_compute_group в результате указывает на вычислительную группу по умолчанию:

SHOW PROPERTY;

Просмотр вычислительной группы по умолчанию для другого пользователя (требуются права администратора):

SHOW PROPERTY FOR {user};

Описание прав​

Роль пользователяДоступные действия
Пользователь с правами администратора (например, CREATE USER jack IDENTIFIED BY '123456' DEFAULT ROLE "admin")Может задавать вычислительную группу по умолчанию для себя и других пользователей; может просматривать PROPERTY для себя и других пользователей
Обычный пользователь (например, CREATE USER jack1 IDENTIFIED BY '123456')Может задавать вычислительную группу по умолчанию только для себя; может просматривать только собственные PROPERTY; не может просматривать все вычислительные группы (для этого требуется право GRANT ADMIN)
Примечание
  • Если текущий пользователь не настроил вычислительную группу по умолчанию, при чтении или записи данных возникает ошибка. Используйте команду USE @cluster, чтобы указать вычислительную группу для текущего сеанса, или оператор SET PROPERTY, чтобы задать вычислительную группу по умолчанию.
  • Если текущий пользователь настроил вычислительную группу по умолчанию, но впоследствии эта группа была удалена, при чтении или записи данных также возникает ошибка. Используйте команду USE @cluster, чтобы выбрать другую вычислительную группу, или оператор SET PROPERTY, чтобы обновить настройку вычислительной группы по умолчанию.

Переключение вычислительных групп​

Назначение: указание базы данных и вычислительной группы для использования в текущем сеансе в архитектуре с разделением вычислений и хранения.

Синтаксис:

USE { [catalog_name.]database_name[@compute_group_name] | @compute_group_name }

Описание: если имя базы данных или вычислительной группы содержит зарезервированное ключевое слово, заключите соответствующее имя в обратные кавычки (`).

Масштабирование вычислительных групп​

Используйте следующие команды для добавления или удаления узлов BE и масштабирования вычислительной группы:

  • Увеличение числа узлов: ALTER SYSTEM ADD BACKEND
  • Уменьшение числа узлов: ALTER SYSTEM DECOMMISSION BACKEND

Перебалансировка нагрузки после масштабирования​

Cloud Rebalance служит механизмом балансировки нагрузки в архитектуре Doris с разделением вычислений и хранения. При изменении числа узлов BE в вычислительной группе (длительное отсутствие узла в сети также считается событием сокращения группы) система автоматически перераспределяет трафик чтения и записи в кластере.

Типы стратегий балансировки​

Поддерживаемые версии

Функция balance_type поддерживается начиная с Doris 3.1.3 и Doris 4.0.2. В более ранних версиях для управления выполнением задач прогрева во время перебалансировки был доступен только глобальный параметр FE enable_cloud_warm_up_for_rebalance.

В следующем примере описаны четыре типа стратегий для сценария увеличения числа узлов:

Тип стратегииВремя до готовности нового узлаВлияние на производительностьПринцип работыСценарии применения
without_warmupМинимальноеНаибольшееFE напрямую обновляет сопоставление шардов с узлами; при первом чтении или записи данные в файловом кеше отсутствуют, поэтому их необходимо получить из S3Подходит, если новый узел нужно быстро ввести в работу и колебания производительности допустимы
async_warmupНебольшоеВозможны промахи кешаЗапускается задача прогрева; сопоставление обновляется после успешного выполнения задачи или истечения времени ожидания; система пытается заполнить файловый кеш во время переключения сопоставления, но при некоторых первых чтениях данные всё ещё могут отсутствовать в кешеУниверсальный вариант с приемлемой производительностью
sync_warmupБолее длительноеПрактически без промахов кешаЗапускается задача прогрева; FE изменяет сопоставление только после подтверждения завершения задачи, гарантируя завершение переноса кешаПодходит, если после масштабирования требуется высокая производительность и файловый кеш новых узлов должен быть заполнен
peer_read_async_warmupМинимальноеНезначительноеFE напрямую изменяет сопоставление шардов с узлами и запускает задачу прогрева без гарантии её завершения; при первых чтениях на новом узле данные поступают из файлового кеша исходного узла BE через чтение кеша соседних узлов, для чего параметр enable_cache_read_from_peer на узлах BE должен оставаться включённым (по умолчанию он включён)Подходит, если новые узлы нужно быстро ввести в работу без прямого чтения из S3, а исходные узлы BE способны справиться с дополнительной нагрузкой чтения

Настройка​

Глобальный тип балансировки по умолчанию​

Задайте глобальное значение по умолчанию в файле конфигурации FE (fe.conf):

cloud_warm_up_for_rebalance_type = "async_warmup"
Настройка на уровне вычислительной группы​

Тип балансировки можно настроить отдельно для каждой вычислительной группы:

ALTER COMPUTE GROUP cg1 PROPERTIES("balance_type"="async_warmup");
Правила приоритета настроек​
  1. Если для вычислительной группы не задан balance_type, используется глобальное значение по умолчанию async_warmup.
  2. Если для вычислительной группы задан balance_type, при выполнении перебалансировки приоритет имеет настройка этой группы.

Переименование вычислительной группы​

Назначение: изменение имени существующей вычислительной группы.

Команда:

ALTER SYSTEM RENAME COMPUTE GROUP <old_name> <new_name>;
Примечание

После переименования права пользователей и настройки вычислительной группы по умолчанию, связанные с исходным именем группы (old_name), не обновляются автоматически с учётом нового имени (new_name). Необходимо вручную повторно предоставить права с учётной записи администратора. Это поведение соответствует системе прав MySQL.

Часто задаваемые вопросы​

Как просмотреть и изменить глобальный тип перебалансировки?​

  • Просмотр:
    ADMIN SHOW FRONTEND CONFIG LIKE "cloud_warm_up_for_rebalance_type";
  • Изменение (вступает в силу без перезапуска FE):
    ADMIN SET FRONTEND CONFIG ("cloud_warm_up_for_rebalance_type" = "without_warmup");

Как узнать тип балансировки вычислительной группы?​

Выполните SHOW COMPUTE GROUPS;. Столбец properties в результате содержит атрибуты каждой вычислительной группы, в том числе настройку balance_type.

Как определить, стабилизировалось ли распределение tablet в кластере?​

Способ 1: проверка с помощью SHOW BACKENDS

Проверьте, распределено ли количество tablet между узлами BE примерно равномерно. Ориентировочный диапазон:

(total tablets in cluster / number of BEs in Compute Group) × 0.95
~
(total tablets in cluster / number of BEs in Compute Group) × 1.05

Здесь 0.05 обозначает значение по умолчанию для параметра конфигурации FE cloud_rebalance_percent_threshold. Чтобы tablet распределялись между узлами BE более равномерно, уменьшите значение этого параметра.

Способ 2: наблюдение по метрикам FE

Проверьте серию метрик doris_fe_cloud_.*_balance_num в метриках FE. Если значения длительное время не меняются, вычислительная группа достигла сбалансированного состояния. Рекомендуется добавить эти метрики на панель мониторинга для постоянного наблюдения:

curl "http://feip:fe_http_port/metrics" | grep '_balance_num'

Что делать, если при чтении или записи данных возникает ошибка «Не настроена вычислительная группа по умолчанию»?​

Устраните проблему одним из следующих способов:

  1. Используйте команду USE @cluster, чтобы временно указать вычислительную группу для текущего сеанса.
  2. Используйте SET PROPERTY 'default_compute_group' = '{clusterName}', чтобы задать постоянную вычислительную группу по умолчанию.

Что делать, если после удаления вычислительной группы по умолчанию возникает ошибка?​

После удаления вычислительной группы пользователи, которые от неё зависят, сталкиваются с ошибками при чтении или записи данных. Варианты решения:

  1. Используйте команду USE @cluster, чтобы выбрать другую вычислительную группу для текущего сеанса.
  2. Используйте SET PROPERTY, чтобы задать другую доступную вычислительную группу по умолчанию.
На этой странице