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

Глава 1.1. Развертывание StarRocks — сборка из исходников

Пошаговое руководство по выбору релиза StarRocks, подготовке Docker-окружения и сборке из исходников (FE/BE и Broker), с советами по AVX2/ARM и ускорению загрузки образов.

111 открытий2К показов
Глава 1.1. Развертывание StarRocks — сборка из исходников

Перед развертыванием StarRocks часто встает вопрос выбора версии. На GitHub доступны архивы исходных кодов всех релизов, а на официальном сайте публикуются готовые бинарные пакеты для x86 (CentOS 7+). Рекомендуем ориентироваться на следующие принципы:

  • Тестовая среда: используйте последний стабильный релиз (например, 3.5.6; см. страницу Tags на GitHub).
  • Staging (предпроизводственная) и Production (производственная) среды: используйте последний минорный релиз предыдущей стабильной ветки.
  • Если требуется новый функционал или критическая фиксация, можно собрать из актуального кода ветки main, используя официальный Docker-образ сборочного окружения.
  • Компонент BE (Backend) требует CPU с поддержкой AVX2. Возможна сборка без AVX2 (работоспособно, но не рекомендуется — нет полноценного покрытия тестами).
  • Начиная с 1.19 StarRocks поддерживает ARM, но потребует самостоятельной сборки на ARM-хосте (официальные готовые бинарники под ARM пока не публикуются).

Справочные ссылки:

Ниже — пример сборки из актуального кода ветки main с использованием официального Docker-образа.

1. Установка Docker и загрузка сборочного образа

Для примера используется CentOS 7.6 в виртуальной машине (рекомендуется ≥2 vCPU и ≥4 ГБ RAM). Во время сборки требуется стабильное сетевое подключение.

1.1 Установка Docker

			sudo yum -y install docker

		

1.2 Запуск Docker и автозапуск

			sudo systemctl start docker
sudo systemctl enable docker

		

1.3 Проверка установки

			docker run hello-world

		

При успешном выполнении отобразится сообщение “Hello from Docker!”.

1.4 Ускорение загрузки образов (для нестабильных каналов)

Если загрузка официальных образов Docker медленная/нестабильная, можно использовать сервисы Alibaba Cloud Container Registry (ACR). Важно: официальный ACR image accelerator больше не синхронизирует последние образы. Если образ не скачивается или тег latest не содержит актуальную версию, воспользуйтесь альтернативами:

  • Подписка в ACR на зарубежные исходные образы (subscription of overseas source images).
  • Использование GA (Global Accelerator) для ускорения прямого доступа к зарубежным реестрам.

Рекомендация для Production: минимизируйте зависимость от Docker Hub из‑за сетевых рисков.

Если вы используете containerd:

  • Убедитесь, что в /etc/containerd/config.toml задан config_path, например: [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d"
  • Уберите конфликтующие mirrors (если есть), перезапустите containerd: sudo systemctl restart containerd
  • При ошибке старта изучите вывод: journalctl -u containerd
  • Создайте файл /etc/containerd/certs.d/docker.io/hosts.toml: server = "https://registry-1.docker.io" [host."https://<your-ACR-accelerator-address>"] capabilities = ["pull", "resolve", "push"]

1.5 Загрузка сборочного образа StarRocks

Выбирайте тег образа в соответствии с веткой/версией исходников (для ветки main — тег main; для ветки 3.5 — тег 3.5 и т. п.):

			docker pull starrocks/dev-env:main

		

1.6 Просмотр локальных образов

			docker images

		

2. Получение исходников StarRocks

2.1 Клонирование из GitHub или скачивание архива

Стандартно:

			git clone https://github.com/StarRocks/starrocks.git

		

Если из‑за сетевых ограничений возникают ошибки (например, EOF), можно:

Чтобы ускорить клонирование, добавьте --depth 1 (если не требуется полная история).

2.2 Загрузка архива на сервер и распаковка (вариант с ZIP)

			ls
# starrocks-main.zip
unzip starrocks-main.zip
# появится каталог /root/starrocks-main

		

2.3 Запуск контейнера со сборочным окружением и монтированием кэшей

Рекомендуется смонтировать локальный Maven-кэш (~/.m2) для ускорения повторных сборок.

			docker run -it \
  -v /root/.m2:/root/.m2 \
  -v /root/starrocks-main:/root/starrocks-main \
  --name starrocks-image \
  --privileged=true \
  -d starrocks/dev-env:main

		

(Опционально — подключите ccache, смонтировав ~/.ccache, если это поддерживается образом.)

2.4 Проверка запущенных контейнеров

			docker ps

		

2.5 Вход в контейнер

			docker exec -it starrocks-image /bin/bash

		

2.6 Переход в каталог исходников

			cd /root/starrocks-main

		

2.7 Сборка FE и BE

			./build.sh

		

Скрипт скачает зависимости и выполнит сборку (может занять значительное время). Благодаря монтированию ~/.m2 зависимости будут переиспользованы в следующих сборках.

Результаты сборки — в каталоге output/:

			cd output/
ls -l
# be/  fe/  LICENSE.txt  NOTICE.txt  udf/

		

Сборка без AVX2 (только при необходимости; не рекомендуется)

Измените build.sh, чтобы принудительно отключить AVX2:

			# фрагмент build.sh
WITH_HDFS=ON

if [[ -z ${USE_AVX2} ]]; then
    USE_AVX2=OFF
fi

		

Измените сборку сторонней библиотеки в thirdparty/build-thirdparty.sh (блок croaring):

			# croaring bitmap
build_croaringbitmap() {
    check_if_source_exist $CROARINGBITMAP_SOURCE
    cd $TP_SOURCE_DIR/$CROARINGBITMAP_SOURCE
    mkdir -p $BUILD_DIR && cd $BUILD_DIR
    rm -rf CMakeCache.txt CMakeFiles/
    CXXFLAGS="-O3 -mno-avx2 -mno-avx" \
    LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc" \
    $CMAKE_CMD -DROARING_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
    -DCMAKE_INCLUDE_PATH="$TP_INSTALL_DIR/include" \
    -DENABLE_ROARING_TESTS=OFF \
    -DROARING_DISABLE_NATIVE=ON \
    -DFORCE_AVX=OFF \
    -DCMAKE_LIBRARY_PATH="$TP_INSTALL_DIR/lib;$TP_INSTALL_DIR/lib64" ..
    make -j$PARALLEL && make install
}

		

Повторно выполните ./build.sh. Учтите: такой вариант не имеет полноценного покрытия тестами.

Полезные опции build.sh

			Usage: build.sh <options>
  Optional options:
     --be               build Backend
     --fe               build Frontend and Spark Dpp application
     --spark-dpp        build Spark DPP application
     --clean            clean and build target
     --with-gcov        build Backend with gcov, has an impact on performance
     --without-gcov     build Backend without gcov (default)
     --with-hdfs        enable hdfs support
     --without-hdfs     disable hdfs support

		

2.8 Сборка Broker

Broker не собирается шагом выше — его нужно собирать отдельно:

			cd fs_brokers/apache_hdfs_broker/ && sh build.sh

		

Готовые файлы появятся в

			fs_brokers/apache_hdfs_broker/output
		

.

2.9 Выход и повторный запуск контейнера при необходимости

Так как каталог с исходниками смонтирован в контейнер, результаты сборки доступны на хосте.

			exit                          # выйти из контейнера
docker start starrocks-image  # при необходимости перезапустить контейнер
docker exec -it starrocks-image /bin/bash

		

Примечания и рекомендации

  • FE (Frontend) и BE (Backend) — основные компоненты StarRocks, сборка которых выполняется скриптом build.sh.
  • Для воспроизводимости привязывайте тег сборочного Docker-образа к ветке/версии исходников (например, starrocks/dev-env:3.5 для ветки 3.5.x).
  • Для ускорения повторных сборок используйте кэш Maven (~/.m2) и, при возможности, ccache для C++.
  • ARM: официальный сборочный Docker-образ пока не рассчитан на ARM. Для ARM-сборки потребуется нативный ARM-хост и корректные версии зависимостей (JDK, CMake и др.).
  • Список актуальных релизов и тегов: https://github.com/StarRocks/starrocks/tags
  • Release Notes 1.19 (сообщество): https://forum.mirrorship.cn/t/topic/552

После этих шагов у вас будут собранные бинарные артефакты FE/BE и Broker, готовые к дальнейшему развертыванию кластера StarRocks.

Следите за новыми постами
Следите за новыми постами по любимым темам
111 открытий2К показов