Быстрый старт за 5 минут
После прохождения этого руководства вы сможете:
- Запустить полноценный кластер Doris за 5 минут с помощью Docker
- Подключиться к кластеру с помощью клиента MySQL и проверить состояние узлов
- Создать базу данных и таблицу, а затем выполнить свой первый запрос к данным
- Хотите быстро попробовать Doris? Используйте развёртывание с помощью Docker: всё будет готово за 5 минут.
- Хотите подробно разобраться в развёртывании для промышленной эксплуатации? Используйте полное локальное развёртывание, включая настройку раздельного размещения FE/BE.
Быстрое развёртывание с помощью Docker
Начиная с последней версии, для быстрого развёртывания можно использовать Docker.
Шаг 1 (1/2): Запуск кластера
Выполните следующую команду, чтобы скачать скрипт запуска и сразу запустить кластер. Если версия не указана, по умолчанию загружается последний выпуск (doris-latest):
curl -fsSL https://doris.apache.org/files/start-doris.sh | bash
Чтобы указать версию, используйте параметр -v:
curl -fsSL https://doris.apache.org/files/start-doris.sh | bash -s -- -v 4.1.0
Шаг 2 (2/2): Проверка состояния кластера
Подключитесь к кластеру с помощью клиента MySQL и проверьте состояние FE и BE:
-- Purpose: verify that the FE node has joined the cluster
-- Expected: both Join and Alive columns are true
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `join`, `alive` FROM frontends()'
-- Purpose: verify that the BE node is heartbeating normally
-- Expected: the Alive column is 1
mysql -uroot -P9030 -h127.0.0.1 -e 'SELECT `host`, `alive` FROM backends()'
Пояснение к выводу: Alive=true (FE) или Alive=1 (BE) означает, что узел работает нормально.
Полное локальное развёртывание
- Операционная система: распространённые среды Linux на AMD/ARM, например Ubuntu
- Среда Java: JDK 17+
- Права пользователя: создайте отдельного пользователя Doris; не используйте root
Шаг 1 (1/4): Скачивание бинарного пакета
Скачайте бинарный пакет для вашей системы со страницы загрузки Apache Doris и распакуйте его в выбранный каталог.
Шаг 2 (2/4): Настройка системной среды
Увеличьте максимальное число файловых дескрипторов (чтобы избежать ошибок из-за слишком большого количества открытых файлов):
vi /etc/security/limits.conf
* soft nofile 1000000
* hard nofile 1000000
Увеличьте предельное количество областей виртуальной памяти:
cat >> /etc/sysctl.conf << EOF
vm.max_map_count = 2000000
EOF
sysctl -p
Шаг 3 (3/4): Развёртывание FE
-
Настройте FE: отредактируйте
apache-doris/fe/conf/fe.conf# Specify the Java environment
JAVA_HOME=/home/doris/jdk
# Specify the FE listening IP (adjust based on the actual network segment)
priority_networks=127.0.0.1/32 -
Запустите FE:
apache-doris/fe/bin/start_fe.sh --daemon -
Проверьте состояние FE:
-- Purpose: confirm that the FE has started and joined the cluster
-- Expected: Join=true, Alive=true, IsMaster=true
mysql -uroot -P9030 -h127.0.0.1 -e "show frontends;"
Шаг 4 (4/4): Развёртывание BE
-
Настройте BE: отредактируйте
apache-doris/be/conf/be.conf# Specify the BE listening IP (must be in the same network segment as the FE's priority_networks)
priority_networks=127.0.0.1/32 -
Запустите BE:
apache-doris/be/bin/start_be.sh --daemon -
Зарегистрируйте BE в кластере:
-- Purpose: add the BE node to the cluster
ALTER SYSTEM ADD BACKEND "127.0.0.1:9050"; -
Проверьте состояние BE:
-- Purpose: confirm that the BE is registered and heartbeating normally
-- Expected: Alive=true
mysql -uroot -P9030 -h127.0.0.1 -e "show backends;"
Выполнение первого запроса
После запуска кластера, независимо от того, использовали ли вы Docker или локальное развёртывание, выполните следующие шаги, чтобы попробовать возможности SQL в Doris.
Подключение к кластеру
mysql -uroot -P9030 -h127.0.0.1
Создание базы данных и таблицы
-- Purpose: create a demo database and table
create database demo;
use demo;
create table mytable
(
k1 TINYINT,
k2 DECIMAL(10, 2) DEFAULT "10.05",
k3 CHAR(10) COMMENT "string column",
k4 INT NOT NULL DEFAULT "1" COMMENT "int column"
)
COMMENT "my first table"
DISTRIBUTED BY HASH(k1) BUCKETS 1
PROPERTIES ("replication_num" = "1");
Загрузка тестовых данных
-- Purpose: insert a few rows of test data
insert into mytable values
(1, 0.14, 'a1', 20),
(2, 1.04, 'b2', 21),
(3, 3.14, 'c3', 22),
(4, 4.35, 'd4', 23);
Выполнение запроса
-- Purpose: verify that the data was loaded successfully
-- Expected: 4 rows are returned
select * from demo.mytable;
Пример вывода:
+------+------+------+------+
| k1 | k2 | k3 | k4 |
+------+------+------+------+
| 1 | 0.14 | a1 | 20 |
| 2 | 1.04 | b2 | 21 |
| 3 | 3.14 | c3 | 22 |
| 4 | 4.35 | d4 | 23 |
+------+------+------+------+
Часто задаваемые вопросы
В: Подходит ли развёртывание с помощью Docker для промышленной эксплуатации?
Нет. Развёртывание с помощью Docker предназначено только для локальной разработки и тестирования; при удалении контейнера данные теряются. Для промышленной эксплуатации используйте полное локальное развёртывание или развёртывание на нескольких узлах.
В: Как установить Docker на Mac?
Скачайте и установите Docker Desktop.
В: После установки Docker Desktop на Mac появляется сообщение «Docker environment not detected». Что делать?
Создайте символическую ссылку:
sudo ln -s /Applications/Docker.app/Contents/Resources/bin/docker /usr/local/bin/docker
В: Docker на Mac сообщает об ошибке «error getting credentials». Что делать?
В качестве временного решения удалите поле credsStore из ~/.docker/config.json. Обратите внимание: при этом учётные данные хранятся в открытом виде, поэтому такой способ допустим только для локальной разработки.
В: После добавления узла BE его состояние по-прежнему отображается как «Dead». Что проверить?
Проверьте, что параметр priority_networks узла BE задаёт тот же сетевой сегмент, в котором находится FE, и убедитесь, что порты BE (9050/9060/8040/8060) не заблокированы межсетевым экраном.
В: При локальном развёртывании в WSL2 узел BE не присоединяется к кластеру. В чём причина?
В WSL2 пространство имён loopback изолировано для каждого дистрибутива, поэтому FE и BE не могут связаться друг с другом через 127.0.0.1. Из-за этого настройка по умолчанию priority_networks=127.0.0.1/32 приводит к сбоям регистрации BE или передачи сигналов состояния в WSL2.
Чтобы исправить это, выполните ip addr show eth0 и определите фактический сетевой сегмент WSL (обычно 172.16.0.0/12 или 172.x.x.x/20), затем укажите этот сегмент в параметре priority_networks в обоих файлах, fe/conf/fe.conf и be/conf/be.conf, перезапустите FE и BE и повторно выполните ALTER SYSTEM ADD BACKEND.
В: Как убедиться, что кластер в целом работает нормально?
Выполните SHOW FRONTENDS; и SHOW BACKENDS; и убедитесь, что столбец Alive имеет значение true для каждого узла.
Следующие шаги
- [Руководство по моделированию данных]: узнайте о моделях данных Doris и стратегиях партиционирования (NEXT-TODO)
- [Начало работы с операциями SQL]: изучите загрузку данных, выполнение запросов и обновление данных (NEXT-TODO)
- [Управление кластером]: освойте эксплуатацию кластера в промышленной среде (NEXT-TODO)
Следующие рекомендации относятся только к локальной разработке и тестированию. Не используйте описанные конфигурации в промышленной среде:
- Данные легко потерять: при развёртывании с помощью Docker данные теряются после удаления контейнера; экземпляры с одной репликой не обеспечивают избыточного хранения данных.
- Конфигурация с одной репликой: все операторы создания таблиц в примерах используют одну реплику. В промышленной среде используйте хранение с несколькими репликами, чтобы обеспечить надёжность данных.