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

Ручное развёртывание кластера с совмещёнными хранением и вычислениями

Развёртывание кластера с совмещёнными хранением и вычислениями включает четыре шага:

  1. Разверните узел FE Master: разверните первый узел FE в качестве узла Master.

  2. Разверните кластер FE (необязательно): разверните кластер FE, добавив узлы FE Follower или Observer.

  3. Разверните узлы BE: зарегистрируйте узлы BE в кластере FE.

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

Перед началом развёртывания можно скачать нужную версию Doris.

Предварительные требования​

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

Что проверитьТребованиеСвязанный документ
Операционная системаCentOS 7+ / Ubuntu 22.04+Проверка операционной системы
Версия JDKJDK 17+-
СетьУзлы доступны друг другу, порты открытыПроверка среды
Место на дискеДля FE рекомендуется 100GB+, для BE рекомендуется 500GB+Планирование кластера

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

Шаг 1: развёртывание узла FE Master​

  1. Создайте каталог для метаданных

    При развёртывании FE рекомендуется хранить данные на диске, который не используется узлами BE.

    После распаковки установочного пакета доступен каталог по умолчанию doris-meta. Рекомендуется создать отдельный каталог для метаданных и сделать каталог по умолчанию doris-meta символической ссылкой на него. В промышленной среде используйте отдельный SSD и не размещайте каталог метаданных в установочном каталоге Doris. В средах разработки и тестирования допустимо использовать конфигурацию по умолчанию.

    ## Use a separate disk for FE metadata
    mkdir -p <doris_meta_created>

    ## Create FE metadata directory symlink
    ln -s <doris_meta_created> <doris_meta_original>
  2. Измените файл конфигурации FE

    Файл конфигурации FE находится в каталоге conf внутри каталога развёртывания FE. Перед запуском узла FE необходимо изменить conf/fe.conf.

    Перед развёртыванием узла FE рекомендуется скорректировать следующие параметры:

    ## modify Java Heap
    JAVA_OPTS="-Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$DORIS_HOME/log/fe.gc.log.$DATE"

    ## modify case sensitivity
    lower_case_table_names = 1

    ## modify network CIDR
    priority_networks = 10.1.3.0/24

    ## modify Java Home
    JAVA_HOME = <your-java-home-path>

    Описание параметров приведено ниже. Подробную информацию о параметрах конфигурации см. в разделе Параметры конфигурации FE:

    ПараметрРекомендация
    JAVA_OPTSИспользуйте -Xmx для настройки Java Heap. В промышленной среде рекомендуется 16G или больше.
    lower_case_table_names Задаёт учёт регистра. Рекомендуется значение 1 (без учёта регистра). (Этот параметр нельзя изменить после создания кластера.)
    priority_networks Сеть в формате CIDR, задаваемая на основе IP-адреса узла. В среде FQDN можно не указывать.
    JAVA_HOMEДля Doris рекомендуется использовать среду JDK, независимую от операционной системы.
  3. Запустите процесс FE

    Для запуска процесса FE используйте следующую команду:

    bin/start_fe.sh --daemon

    Процесс FE запускается в фоновом режиме, а журналы по умолчанию сохраняются в каталоге log/. Если запуск не удался, проверьте сообщения об ошибках в log/fe.log или log/fe.out.

  4. Проверьте состояние FE после запуска

    Подключитесь к кластеру Doris с помощью клиента MySQL. Изначально доступен пользователь root с пустым паролем по умолчанию.


    mysql -uroot -P<fe_query_port> -h<fe_ip_address>

    После подключения к кластеру Doris можно проверить состояние FE командой show frontends. Обычно следует проверить следующее:

    • Значение Alive, равное true, означает, что узел работает.

    • Значение Join, равное true, означает, что узел присоединился к кластеру, но не гарантирует, что он сейчас находится в кластере (соединение могло быть потеряно).

    • Значение IsMaster, равное true, означает, что текущий узел является узлом Master.

Шаг 2: развёртывание кластера FE (необязательно)​

Для тестирования и проверки можно использовать один узел FE. В промышленной среде рекомендуется развёртывать не менее 3 узлов. После развёртывания узла FE Master необходимо развернуть ещё два узла FE Follower.

  1. Создайте каталог метаданных

    Создайте каталог doris-meta, как описано в разделе о развёртывании узла FE Master.

  2. Измените файл конфигурации FE Follower

    Измените файл конфигурации FE Follower, как описано в разделе о развёртывании узла FE Master. Обычно достаточно скопировать файл конфигурации FE Master.

  3. Зарегистрируйте новый узел FE Follower в кластере Doris

    Перед запуском нового узла FE его необходимо зарегистрировать в кластере FE.

    ## connect a alive FE node
    mysql -uroot -P<fe_query_port> -h<fe_ip_address>

    ## register a new FE follower node
    ALTER SYSTEM ADD FOLLOWER "<fe_ip_address>:<fe_edit_log_port>"

    Для добавления узла Observer используйте команду ADD OBSERVER:

    ## register a new FE observer node
    ALTER SYSTEM ADD OBSERVER "<fe_ip_address>:<fe_edit_log_port>"
    Примечание
    • Количество узлов FE Follower (включая Master) должно быть нечётным. Для обеспечения высокой доступности рекомендуется развернуть 3 узла.

    • Если FE развёрнут в режиме высокой доступности (1 Master, 2 Follower), для увеличения возможностей FE по обработке чтения рекомендуется добавлять узлы FE Observer.

  4. Запустите узел FE Follower

    Для запуска узла FE Follower с автоматической синхронизацией метаданных используйте следующую команду:

    bin/start_fe.sh --helper <helper_fe_ip>:<fe_edit_log_port> --daemon

    Здесь helper_fe_ip обозначает IP-адрес любого работающего узла кластера FE. Параметр --helper требуется только при первом запуске FE и не нужен при последующих перезапусках.

  5. Проверьте состояние узла Follower

    Как и в случае узла FE Master, после добавления узла Follower проверьте его состояние командой show frontends. Значение IsMaster должно быть false.

Шаг 3: развёртывание узлов BE​

  1. Создайте каталог данных

    Процесс BE отвечает за вычисления и хранение данных. По умолчанию каталог данных расположен в be/storage. В промышленной среде данные BE и файлы развёртывания BE обычно хранятся на разных дисках. BE поддерживает распределение данных по нескольким дискам, что позволяет эффективнее использовать их возможности I/O.

    ## Create a BE data storage directory on each data disk
    mkdir -p <be_storage_root_path>
  2. Измените файл конфигурации BE

    Файл конфигурации BE находится в каталоге conf внутри каталога развёртывания BE. Перед запуском узла BE необходимо изменить conf/be.conf.

    ## modify storage path for BE node
    storage_root_path=/home/disk1/doris,medium:HDD;/home/disk2/doris,medium:SSD

    ## modify network CIDR
    priority_networks = 10.1.3.0/24

    ## modify Java Home in be/conf/be.conf
    JAVA_HOME = <your-java-home-path>

    Описание параметров приведено ниже:

    ПараметрРекомендация
    priority_networksСеть в формате CIDR, задаваемая на основе IP-адреса узла. В среде FQDN можно не указывать.
    JAVA_OPTSИспользуйте -Xmx для настройки Java Heap. В промышленной среде рекомендуется 2G или больше.
    JAVA_HOMEДля Doris рекомендуется использовать среду JDK, независимую от операционной системы.
  3. Зарегистрируйте узел BE в Doris

    Перед запуском узла BE его необходимо зарегистрировать в кластере FE:

    ## connect a alive FE node
    mysql -uroot -P<fe_query_port> -h<fe_ip_address>

    ## register BE node
    ALTER SYSTEM ADD BACKEND "<be_ip_address>:<be_heartbeat_service_port>"
  4. Запустите процесс BE

    Для запуска процесса BE используйте следующую команду:

    bin/start_be.sh --daemon

    Процесс BE запускается в фоновом режиме, а журналы по умолчанию сохраняются в каталоге log/. Если запуск не удался, проверьте сообщения об ошибках в log/be.log или log/be.out.

  5. Проверьте состояние BE после запуска

    После подключения к кластеру Doris можно проверить состояние узла BE командой show backends.

    ## connect a alive FE node
    mysql -uroot -P<fe_query_port> -h<fe_ip_address>

    ## check BE node status
    show backends;

    Обычно следует обратить внимание на следующее:

    • Значение Alive, равное true, означает, что узел работает.

    • TabletNum показывает количество tablet на узле. На новых узлах выполняется балансировка данных, в ходе которой значение TabletNum постепенно приближается к среднему.

Шаг 4: проверка корректности работы кластера​

  1. Войдите в базу данных

    Войдите в кластер Doris с помощью клиента MySQL.

    ## connect a alive fe node
    mysql -uroot -P<fe_query_port> -h<fe_ip_address>
  2. Проверьте сведения об установке Doris

    Используйте show frontends и show backends для просмотра сведений о каждом экземпляре в базе данных.

    -- check fe status
    show frontends;

    -- check be status
    show backends;
  3. Измените пароль кластера Doris

    При создании кластера Doris система автоматически создаёт пользователя root с пустым паролем по умолчанию. Для повышения безопасности рекомендуется задать новый пароль пользователя root сразу после создания кластера.

    -- check the current user
    select user();
    +------------------------+
    | user() |
    +------------------------+
    | 'root'@'192.168.88.30' |
    +------------------------+

    -- modify the password for current user
    SET PASSWORD = PASSWORD('doris_new_passwd');
  4. Создайте тестовую таблицу и вставьте данные

    Для проверки корректности работы кластера можно создать в новом кластере тестовую таблицу и вставить в неё тестовые данные.

    -- create a test database
    create database testdb;

    -- create a test table
    CREATE TABLE testdb.table_hash
    (
    k1 TINYINT,
    k2 DECIMAL(10, 2) DEFAULT "10.5",
    k3 VARCHAR(10) COMMENT "string column",
    k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
    )
    COMMENT "my first table"
    DISTRIBUTED BY HASH(k1) BUCKETS 32;

    Doris совместим с протоколом MySQL, поэтому для вставки данных можно использовать операторы INSERT.

    -- insert data
    INSERT INTO testdb.table_hash VALUES
    (1, 10.1, 'AAA', 10),
    (2, 10.2, 'BBB', 20),
    (3, 10.3, 'CCC', 30),
    (4, 10.4, 'DDD', 40),
    (5, 10.5, 'EEE', 50);

    -- check the data
    SELECT * from testdb.table_hash;
    +------+-------+------+------+
    | k1 | k2 | k3 | k4 |
    +------+-------+------+------+
    | 3 | 10.30 | CCC | 30 |
    | 4 | 10.40 | DDD | 40 |
    | 5 | 10.50 | EEE | 50 |
    | 1 | 10.10 | AAA | 10 |
    | 2 | 10.20 | BBB | 20 |
    +------+-------+------+------+

Примечания​

  • Для каталога метаданных FE рекомендуется использовать отдельный SSD. Не размещайте этот каталог в установочном каталоге Doris.
  • Каталог данных BE можно настроить для использования нескольких дисков с помощью параметра storage_root_path в формате path1,medium:HDD;path2,medium:SSD.
  • В промышленной среде для обеспечения высокой доступности рекомендуется развернуть 3 узла FE Follower.
  • Параметр lower_case_table_names нельзя изменить после создания кластера. Проверьте его значение при инициализации.
  • Параметр priority_networks необходимо настроить в соответствии с фактической конфигурацией сети, чтобы он соответствовал подсети IP-адреса узла.

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

Вопрос: как устранить проблемы с запуском FE?​

  1. Проверьте среду Java: выполните echo $JAVA_HOME, чтобы убедиться, что JDK установлен.
  2. Проверьте журналы: выполните tail -100 log/fe.log и найдите сообщения с Exception или ERROR.
  3. Распространённые ошибки:
    • Порт уже используется: проверьте, не занят ли порт query_port (по умолчанию 9030), указанный в fe.conf.
    • Права доступа к каталогу метаданных: убедитесь, что каталог doris-meta доступен для чтения и записи.

Вопрос: что делать, если BE не может зарегистрироваться в кластере FE?​

  1. Убедитесь, что кластер FE работает нормально: выполните show frontends, чтобы проверить состояние Alive.
  2. Проверьте сетевое соединение: выполните telnet <fe_ip> 9030, чтобы проверить доступность порта.
  3. Проверьте конфигурацию BE: убедитесь, что параметр priority_networks в be.conf соответствует фактическому IP-адресу.
  4. Проверьте журнал BE: выполните tail -100 log/be.log, чтобы найти причину сбоя регистрации.

Вопрос: как проверить работоспособность кластера?​

-- Check FE status
SHOW FRONTENDS;

-- Check BE status
SHOW BACKENDS;
-- Confirm that Alive is true for all BEs

Вопрос: как сбросить пароль, если пароль root забыт?​

На узле FE подключитесь через 127.0.0.1, чтобы войти под пользователем root без пароля, а затем измените пароль:

mysql -h127.0.0.1 -P9030 -uroot

-- Reset password
SET PASSWORD = PASSWORD('your_new_password');

Устранение неполадок​

ПроблемаВозможная причинаРешение
FE не запускаетсяПорт уже используетсяИзмените порт в fe.conf или завершите использующий его процесс
Сбой синхронизации метаданных FEПроблема с сетью или потеря соединения с узломПроверьте сеть между узлами и убедитесь, что параметр priority_networks настроен правильно
Сбой регистрации BEКластер FE недоступенУбедитесь, что хотя бы один узел FE имеет состояние Alive
BE имеет состояние Alive, но не содержит TabletБалансировка данных не завершенаПодождите некоторое время; на новом узле балансировка данных выполняется автоматически
Не удаётся изменить парольСинтаксическая ошибка или проблема с правами доступаИспользуйте синтаксис SET PASSWORD = PASSWORD('new_password')