Ручное развёртывание кластера с совмещёнными хранением и вычислениями
Развёртывание кластера с совмещёнными хранением и вычислениями включает четыре шага:
-
Разверните узел FE Master: разверните первый узел FE в качестве узла Master.
-
Разверните кластер FE (необязательно): разверните кластер FE, добавив узлы FE Follower или Observer.
-
Разверните узлы BE: зарегистрируйте узлы BE в кластере FE.
-
Проверьте корректность работы кластера: после развёртывания подключитесь к кластеру и проверьте корректность его работы.
Перед началом развёртывания можно скачать нужную версию Doris.
Предварительные требования
Перед началом развёртывания убедитесь, что выполнены следующие условия:
| Что проверить | Требование | Связанный документ |
|---|---|---|
| Операционная система | CentOS 7+ / Ubuntu 22.04+ | Проверка операционной системы |
| Версия JDK | JDK 17+ | - |
| Сеть | Узлы доступны друг другу, порты открыты | Проверка среды |
| Место на диске | Для FE рекомендуется 100GB+, для BE рекомендуется 500GB+ | Планирование кластера |
После выполнения предварительных проверок и планирования, описанных в разделах Проверка среды, Проверка операционной системы и Планирование кластера, можно приступать к развёртыванию кластера с совмещёнными хранением и вычислениями.
Шаг 1: развёртывание узла FE Master
-
Создайте каталог для метаданных
При развёртывании 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> -
Измените файл конфигурации 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, независимую от операционной системы. -
Запустите процесс FE
Для запуска процесса FE используйте следующую команду:
bin/start_fe.sh --daemonПроцесс FE запускается в фоновом режиме, а журналы по умолчанию сохраняются в каталоге
log/. Если запуск не удался, проверьте сообщения об ошибках вlog/fe.logилиlog/fe.out. -
Проверьте состояние 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.
-
Создайте каталог метаданных
Создайте каталог
doris-meta, как описано в разделе о развёртывании узла FE Master. -
Измените файл конфигурации FE Follower
Измените файл конфигурации FE Follower, как описано в разделе о развёртывании узла FE Master. Обычно достаточно скопировать файл конфигурации FE Master.
-
Зарегистрируйте новый узел 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.
-
-
Запустите узел FE Follower
Для запуска узла FE Follower с автоматической синхронизацией метаданных используйте следующую команду:
bin/start_fe.sh --helper <helper_fe_ip>:<fe_edit_log_port> --daemonЗдесь
helper_fe_ipобозначает IP-адрес любого работающего узла кластера FE. Параметр--helperтребуется только при первом запуске FE и не нужен при последующих перезапусках. -
Проверьте состояние узла Follower
Как и в случае узла FE Master, после добавления узла Follower проверьте его состояние командой
show frontends. Значение IsMaster должно быть false.
Шаг 3: развёртывание узлов BE
-
Создайте каталог данных
Процесс BE отвечает за вычисления и хранение данных. По умолчанию каталог данных расположен в
be/storage. В промышленной среде данные BE и файлы развёртывания BE обычно хранятся на разных дисках. BE поддерживает распределение данных по нескольким дискам, что позволяет эффективнее использовать их возможности I/O.## Create a BE data storage directory on each data disk
mkdir -p <be_storage_root_path> -
Измените файл конфигурации 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, независимую от операционной системы. -
Зарегистрируйте узел 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>" -
Запустите процесс BE
Для запуска процесса BE используйте следующую команду:
bin/start_be.sh --daemonПроцесс BE запускается в фоновом режиме, а журналы по умолчанию сохраняются в каталоге
log/. Если запуск не удался, проверьте сообщения об ошибках вlog/be.logилиlog/be.out. -
Проверьте состояние 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: проверка корректности работы кластера
-
Войдите в базу данных
Войдите в кластер Doris с помощью клиента MySQL.
## connect a alive fe node
mysql -uroot -P<fe_query_port> -h<fe_ip_address> -
Проверьте сведения об установке Doris
Используйте
show frontendsиshow backendsдля просмотра сведений о каждом экземпляре в базе данных.-- check fe status
show frontends;
-- check be status
show backends; -
Измените пароль кластера 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'); -
Создайте тестовую таблицу и вставьте данные
Для проверки корректности работы кластера можно создать в новом кластере тестовую таблицу и вставить в неё тестовые данные.
-- 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?
- Проверьте среду Java: выполните
echo $JAVA_HOME, чтобы убедиться, что JDK установлен. - Проверьте журналы: выполните
tail -100 log/fe.logи найдите сообщения сExceptionилиERROR. - Распространённые ошибки:
- Порт уже используется: проверьте, не занят ли порт
query_port(по умолчанию 9030), указанный вfe.conf. - Права доступа к каталогу метаданных: убедитесь, что каталог
doris-metaдоступен для чтения и записи.
- Порт уже используется: проверьте, не занят ли порт
Вопрос: что делать, если BE не может зарегистрироваться в кластере FE?
- Убедитесь, что кластер FE работает нормально: выполните
show frontends, чтобы проверить состояние Alive. - Проверьте сетевое соединение: выполните
telnet <fe_ip> 9030, чтобы проверить доступность порта. - Проверьте конфигурацию BE: убедитесь, что параметр
priority_networksвbe.confсоответствует фактическому IP-адресу. - Проверьте журнал 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') |