Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11
Перетяжка, Премия ТПрогер, 13.11

Как развернуть StarRocks — одноузловое развёртывание

Пошаговая инструкция по одноузловому развертыванию StarRocks: подготовка среды, настройка FE/BE/Broker, подключение через MySQL, проверка статуса и базовый пример запросов.

70 открытий1К показов
Как развернуть StarRocks — одноузловое развёртывание

Строго говоря, в StarRocks нет «Standalone-режима», и тем более не рекомендуется развёртывать одиночный экземпляр в продуктивной среде. Этот раздел выделен отдельно для сценариев, когда тестовая среда ограничена числом машин или требуется лишь быстрая проверка функциональности — в таком случае можно развернуть StarRocks на одной машине.

В качестве примера используем сервер «starrocks (192.168.110.98)». После выполнения шагов из главы «Глава 1.2: Развертывание StarRocks — подготовка среды» приступаем к развертыванию одноузловой конфигурации.

Для удобства демонстрации подключаемся к серверу пользователем root через XShell. Архитектура одноузловой конфигурации:

Как развернуть StarRocks — одноузловое развёртывание 1

Дизайн каталогов развертывания и данных (дальнейшие шаги строго следуют этому плану):

Как развернуть StarRocks — одноузловое развёртывание 2

1. Получение бинарного пакета

Бинарные пакеты StarRocks доступны на официальном сайте.

В примере используем пакет StarRocks-1.19.2.tar.gz и загружаем его в каталог /opt/software:

			[root@starrocks ~]# mkdir /opt/software
[root@starrocks ~]# cd /opt/software/
[root@starrocks software]# ll
total 988752
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
		

2. Распаковка пакета

			[root@starrocks software]# tar xvf StarRocks-1.19.2.tar.gz
[root@starrocks software]# ll
total 988752
drwxrwxr-x 6 1007 1007        100 Nov 20 20:29 StarRocks-1.19.2
-rw-r--r-- 1 root root 1012479814 Nov 22 15:46 StarRocks-1.19.2.tar.gz
		

Структура распакованного пакета и краткие пояснения приведены в Приложении 1 (дерево каталогов пакета развертывания StarRocks).

3. Подготовка и размещение файлов развертывания

			[root@starrocks software]# mv /opt/software/StarRocks-1.19.2 /opt/software/starrocks   # переименование
[root@starrocks software]# mv /opt/software/starrocks /opt/module/
[root@starrocks software]# cd /opt/module/starrocks/
[root@starrocks starrocks]# ll
total 0
drwxr-xr-x. 5 1021 1021 40 Nov 22 14:40 apache_hdfs_broker
drwxr-xr-x. 6 1021 1021 51 Nov 22 14:40 be
drwxr-xr-x. 8 1021 1021 83 Nov 22 14:52 fe
drwxr-xr-x. 4 1021 1021 32 Nov 22 14:40 udf
		

4. Развертывание экземпляра FE

Изменение конфигурации FE

Конфигурация по умолчанию обычно достаточна для запуска кластера; начинающим пользователям не рекомендуется менять много параметров. В тестовой среде для FE обратите внимание на три момента:

  • Порты по умолчанию — чтобы исключить конфликты (обычно менять не требуется).
  • Привязка IP-адреса — чтобы при наличии нескольких интерфейсов сервис корректно выбирал нужный адрес. Если не знакомы с нотацией CIDR, можно указать полный IP-адрес (алиасы не поддерживаются), например: priority_networks = 192.168.110.98, что эквивалентно priority_networks = 192.168.110.98/32.
  • Каталог метаданных — по умолчанию fe/meta. Рекомендуется создать отдельный каталог и указать его в конфигурации.

Создадим каталог метаданных:

			[root@starrocks starrocks]# mkdir /opt/meta
		

Внесем изменения по привязке IP-адреса и каталогу метаданных (строки с #— комментарии):

			[root@starrocks starrocks]# vi /opt/module/starrocks/fe/conf/fe.conf

# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
meta_dir = /opt/meta

# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98
		

Сохраните конфигурацию.

Запуск FE

			[root@starrocks starrocks]# cd /opt/module/starrocks/fe/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021 1411 Nov 22 14:40 show_fe_version.sh
-rwxrwxr-x. 1 1021 1021 3122 Nov 22 14:40 start_fe.sh
-rwxrwxr-x. 1 1021 1021 1749 Nov 22 14:40 stop_fe.sh

[root@starrocks bin]# ./start_fe.sh --daemon
		

Примечание: скрипт остановки FE —

			stop_fe.sh
		

(запуск:

			./stop_fe.sh
		

FE написан на Java. Проверьте процессы командой jps: если виден процессStarRocksFe, значит FE запущен.

			[root@starrocks bin]# jps
5178 Jps
5164 StarRocksFe
		

При нештатном состоянии изучите журналы (логи) в каталоге FE; основной журнал — fe.log, журналы аудита запросов — fe.audit.log. Так как это первый запуск, если операции выполняются подозрительно долго, можно очистить каталог метаданных FE и повторить процедуру.

Доступ к FE

Подключимся к FE с помощью клиента MySQL (mysql-client). Порт для запросов FE по умолчанию — 9030; встроенный пользователь root, пароль по умолчанию пустой:

			[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.0
mysql>
		

Проверка состояния FE

Если клиент MySQL успешно подключился к FE, это означает, что FE работает. Выполним проверку:

			mysql> show frontends\G
*************************** 1. row ***************************
             Name: 192.168.110.98_9010_1631099997319
               IP: 192.168.110.98
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 417341735
             Join: true
            Alive: true
ReplayedJournalId: 74
    LastHeartbeat: 2021-11-25 19:24:04
         IsHelper: true
           ErrMsg:
1 row in set (0.09 sec)
		

Если Alive = true, узел FE работает нормально.

Добавление экземпляров в кластер

Добавим BE и Broker в кластер. Строгой очередности между «запуском сервиса» и «добавлением сервиса в кластер» нет. Однако если запустить сервис заранее, до добавления экземпляра в кластер BE может писать предупреждения в журнал (например: Fail to get master client from cache). Поэтому удобно сначала полностью подготовить FE, затем добавить остальные экземпляры SQL-командами через клиент MySQL, и после этого по очереди развернуть и запустить их.

  • Добавление BE (используется heartbeat_service_port BE, по умолчанию 9050):
			mysql> alter system add backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.10 sec)
		
  • Добавление Broker: зададим имя, например hdfs_broker (используется broker_ipc_port, по умолчанию 8000):
			mysql> alter system add broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.03 sec)
		

Если при добавлении экземпляра допущена ошибка, можно удалить его и добавить снова.

  • Удаление BE из кластера. Так как в примере только один экземпляр BE, можно удалить его «рисковой» командой dropp (специально двукратная «p»):
			mysql> alter system dropp backend '192.168.110.98:9050';
Query OK, 0 rows affected (0.09 sec)
		
  • Удаление Broker:
			mysql> alter system drop broker hdfs_broker '192.168.110.98:8000';
Query OK, 0 rows affected (0.04 sec)
		

Завершим сеанс:

			mysql> exit
Bye
		

Развертывание экземпляра BE

Изменение конфигурации BE

В тестовой среде для BE обратите внимание на три момента:

  • Порты по умолчанию — чтобы исключить конфликты (обычно менять не требуется).
  • Привязка IP-адреса — чтобы при наличии нескольких интерфейсов сервис корректно выбирал нужный адрес (если не знакомы с CIDR, укажите полный IP-адрес).
  • Каталог хранения данных — по умолчанию be/storage. Рекомендуется создать отдельный каталог и указать его в конфигурации.

Создадим каталог хранения данных:

			[root@starrocks bin]# mkdir /opt/storage
		

Изменим конфигурацию (строки с # — комментарии):

			[root@starrocks bin]# vi /opt/module/starrocks/be/conf/be.conf

# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.98

# you also can specify the properties by setting ':', seperate by ','
# property 'medium' has a higher priority than the extension of path
#
# Default value is ${STARROCKS_HOME}/storage, you should create it by hand.
# storage_root_path = ${STARROCKS_HOME}/storage
storage_root_path = /opt/storage
		

Сохраните конфигурацию.

Запуск BE

			[root@starrocks bin]# cd /opt/module/starrocks/be/bin/
[root@starrocks bin]# ll
total 16
-rwxrwxr-x. 1 1021 1021 1347 Nov 22 14:40 common.sh
-rwxrwxr-x. 1 1021 1021  644 Nov 22 14:40 show_be_version.sh
-rwxrwxr-x. 1 1021 1021 3377 Nov 22 14:40 start_be.sh
-rwxrwxr-x. 1 1021 1021 1601 Nov 22 14:40 stop_be.sh

[root@starrocks bin]# ./start_be.sh --daemon
		

Примечание: скрипт остановки BE — stop_be.sh (запуск: ./stop_be.sh).

BE написан на C++. Проверьте процессы с помощью ps: если виден процесс starrocks_be, значит BE запущен.

Проверка состояния BE

Снова подключимся к кластеру через клиент MySQL:

			[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
mysql>
		

Проверим состояние BE:

			mysql> show backends\G
*************************** 1. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                   IP: 192.168.110.98
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2021-11-25 19:46:17
        LastHeartbeat: 2021-11-25 19:51:32
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 10
     DataUsedCapacity: .000
        AvailCapacity: 28.404 GB
        TotalCapacity: 37.017 GB
              UsedPct: 23.27 %
       MaxDiskUsedPct: 23.27 %
               ErrMsg:
              Version: 1.19.2-b04a782
               Status: {"lastSuccessReportTabletsTime":"2021-11-25 19:51:17"}
1 row in set (0.10 sec)
		

Если Alive = true, BE работает нормально. Так как это первый запуск, при сложностях с быстрой диагностикой можно очистить каталог данных /opt/storage и перезапустить сервис.

Завершим сеанс:

			mysql> exit
Bye
		

Развертывание Broker

После развертывания FE и BE основные сервисы StarRocks готовы. Broker — промежуточный сервис интеграции StarRocks с внешними системами HDFS/объектным хранилищем. Если интеграция не нужна, Broker можно не развертывать. Broker является процессом без сохранения состояния (stateless) и может свободно запускаться и останавливаться без влияния на кластер.

Конфигурация Broker

Конфигурацию Broker обычно менять не требуется. В отличие от FE и BE, у Broker нет и не нужен параметр priority_networks. Сервис Broker по умолчанию привязан к адресу 0.0.0.0. При выполнении команды ADD BROKER (см. раздел 4.5) достаточно указать корректный IP-адрес узла Broker.

Запуск Broker

			[root@starrocks bin]# cd /opt/module/starrocks/apache_hdfs_broker/bin/
[root@starrocks bin]# ll
total 8
-rwxrwxr-x. 1 1021 1021 2616 Sep  7 14:40 start_broker.sh
-rwxrwxr-x. 1 1021 1021 1602 Sep  7 14:40 stop_broker.sh

[root@starrocks bin]# ./start_broker.sh --daemon
		

Примечание: скрипт остановки Broker — stop_broker.sh (запуск: ./stop_broker.sh).

Проверьте процессы Java: если виден BrokerBootstrap, значит Broker запущен.

			[root@starrocks bin]# jps | grep BrokerBootstrap
7594 BrokerBootstrap
		

Журналы Broker — в файле apache_hdfs_broker.log. При нештатном состоянии изучите их для диагностики.V

Проверка состояния Broker

Подключимся к кластеру через клиент MySQL:

			[root@starrocks bin]# mysql -h192.168.110.98 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.0 StarRocks version 1.19.2
mysql>
		

Проверим состояние Broker:

			mysql> show broker\G
*************************** 1. row ***************************
          Name: hdfs_broker
            IP: 192.168.110.98
          Port: 8000
         Alive: true
 LastStartTime: 2021-11-25 20:19:56
LastUpdateTime: 2021-11-25 20:21:31
        ErrMsg:
1 row in set (0.01 sec)
		

Если Alive = true, Broker работает нормально.

Простой пример использования

Смена пароля пользователя root

Например, установим пароль root:

			mysql> set password=password('root');
Query OK, 0 rows affected (0.02 sec)
		

Создание базы и таблицы

Число реплик в StarRocks не может превышать число узлов BE. Так как в примере только один узел BE, при создании таблиц обязательно указывайте одну реплику.

Создадим базу данных:

			mysql> create database starrocks;
Query OK, 0 rows affected (0.01 sec)

mysql> use starrocks;
Database changed
		

Создадим таблицу customer без секционирования, распределенную по хэшу c_custkey на 10 бакетов, с одной репликой:

			mysql> CREATE TABLE customer (
    c_custkey INT,
    c_name VARCHAR(26),
    c_city VARCHAR(11)
)
DUPLICATE KEY(c_custkey)
DISTRIBUTED BY HASH (c_custkey) BUCKETS 10
PROPERTIES (
  "replication_num"="1");
Query OK, 0 rows affected (0.05 sec)
		

Вставка тестовых данных

			mysql> insert into customer values
(1,"Jack","Beijing"),
(2,"Loong","Xian"),
(3,"Bob","London");
Query OK, 3 rows affected (0.07 sec)
{'label':'insert_7ddb8f57-10a2-11ec-bcd0-525400d116d1', 'status':'VISIBLE', 'txnId':'3'}
		

Простой запрос

			mysql> select count(1) from customer;
+----------+
| count(1) |
+----------+
|        3 |
+----------+
		

Использование графических инструментов

StarRocks совместим с протоколом MySQL. При подключении через графические инструменты его можно рассматривать как прямое подключение к MySQL. Например, в SQLyog укажите IP сервера, имя пользователя, пароль и порт (порт для запросов FE по умолчанию — 9030) — после чего подключайтесь.

Развертывание в Docker

Если у единственного сервера достаточно ресурсов (оперативная память, дисковое пространство и т. п.), можно развернуть несколько экземпляров FE/BE на одном узле с использованием Docker. Однако из-за конкуренции за ресурсы такой подход по-прежнему не рекомендуется для продуктивной среды.

Кроме запуска StarRocks в Docker-контейнерах, можно сохранить контейнер, подготовленный на шаге «Глава 1.2: подготовка среды», как образ и использовать его для ускоренного масштабирования кластера.

Контейнеризованное развертывание и эксплуатация в этой главе не рассматриваются. Отдельная документация опишет «развертывание в один клик» одноузлового StarRocks на базе Docker.

Приложение 1: дерево каталогов пакета развертывания StarRocks (частично)

			StarRocks-1.19.2
├── apache_hdfs_broker  # каталог Broker
│   ├── bin
│   │   ├── start_broker.sh      # скрипт запуска Broker
│   │   └── stop_broker.sh       # скрипт остановки Broker
│   ├── conf
│   │   ├── apache_hdfs_broker.conf  # конфигурационный файл Broker
│   │   ├── hdfs-site.xml
│   │   └── log4j.properties
│   └── lib
│       └── *.jar                # jar-зависимости Broker
├── be                           # каталог экземпляра BE
│   ├── bin
│   │   ├── common.sh
│   │   ├── show_be_version.sh   # просмотр версии BE
│   │   ├── start_be.sh          # скрипт запуска BE
│   │   └── stop_be.sh           # скрипт остановки BE
│   ├── conf
│   │   ├── be.conf              # конфигурационный файл BE
│   │   └── hadoop_env.sh
│   ├── lib
│   │   ├── meta_tool            # офлайн-инструмент управления метаданными Tablet
│   │   │                         # [в версии 1.19 объединен в starrocks_be]
│   │   └── starrocks_be         # исполняемый файл BE (для минорного апгрейда достаточно заменить)
│   └── www                      # Web-файлы BE
├── fe                           # каталог экземпляра FE
│   ├── bin
│   │   ├── common.sh
│   │   ├── show_fe_version.sh   # просмотр версии FE
│   │   ├── start_fe.sh          # скрипт запуска FE
│   │   └── stop_fe.sh           # скрипт остановки FE
│   ├── conf
│   │   ├── fe.conf              # конфигурационный файл FE
│   │   └── hadoop_env.sh
│   ├── lib
│   │   ├── starrocks-fe.jar     # jar-файл FE (для минорного апгрейда достаточно заменить)
│   │   └── *.jar                # jar-зависимости FE
│   ├── log
│   │   └── *.log
│   └── webroot                  # Web-файлы FE
└── udf                          # каталог пользовательских функций
    │                            # [на рефакторинге, пока не рекомендуется]
    ├── include
    │   ├── uda_test_harness.h
    │   └── udf.h                # заголовочный файл фреймворка UDF
    └── lib
        └── libStarRocksUdf.a    # статическая библиотека фреймворка UDF
		
Следите за новыми постами
Следите за новыми постами по любимым темам
70 открытий1К показов