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

Компиляция Apache Doris с помощью LDB Toolchain

В этом документе описано, как скомпилировать Apache Doris в Linux с помощью LDB Toolchain. Этот способ дополняет компиляцию с использованием образа Docker и подходит разработчикам, у которых нет среды Docker.

подсказка

Название LDB Toolchain расшифровывается как Linux Distribution Based Toolchain Generator. Это автономный, переносимый и современный набор инструментов для компиляции C++, позволяющий собирать современные проекты C++ практически в любом дистрибутиве Linux.

Благодарим Amos Bird за вклад в проект.

Соответствие версий​

Версия DorisРекомендуемая версия LDB ToolchainКомпиляторы в составе набора
master0.25clang-20, gcc-15
3.1 / 3.0 / 2.10.19clang-17, gcc-13

Целевая аудитория, преимущества и недостатки​

АспектОписание
Целевая аудиторияРазработчики без среды Docker, которые хотят выполнять компиляцию непосредственно на физической или виртуальной машине
ПреимуществаНет зависимости от Docker; набор инструментов автономен и не затрагивает системный компилятор
НедостаткиJava, Maven, Node и системные зависимости необходимо устанавливать вручную

1. Подготовка среды компиляции​

Инструкции подходят для большинства дистрибутивов Linux (CentOS, Ubuntu и других).

1.1 Скачивание ldb_toolchain_gen.sh​

Скачайте соответствующую версию со страницы релизов ldb_toolchain_gen:

  • Архитектура x86_64: скачайте ldb_toolchain_gen.sh
  • Архитектура ARM: скачайте ldb_toolchain_gen.aarch64.sh
подсказка

Главная страница проекта: https://github.com/amosbird/ldb_toolchain_gen

1.2 Создание LDB Toolchain​

Запустите скрипт для создания набора инструментов:

bash ldb_toolchain_gen.sh /path/to/ldb_toolchain/

Здесь /path/to/ldb_toolchain/ — целевой каталог установки. После успешного выполнения скрипта в этом каталоге появится следующая структура:

├── bin
├── include
├── lib
├── share
├── test
└── usr

1.3 Установка остальных компонентов для компиляции​

КомпонентРекомендуемая версияСсылка для скачивания
JDK 81.8.0_391jdk-8u391-linux-x64.tar.gz
JDK 1717.0.10jdk-17.0.10_linux-x64
Maven3.9.9apache-maven-3.9.9-bin.tar.gz
Nodev12.13.0node-v12.13.0-linux-x64.tar.gz

Правила выбора версии JDK:

  • Для Doris 2.1 и более ранних версий используйте JDK 8
  • Для Doris 3.0 и более поздних версий, а также ветки master используйте JDK 17
  • Также можно установить OpenJDK 8 или 17 непосредственно через пакетный менеджер вашего дистрибутива Linux (yum, apt и другие)

Состав системных компонентов различается между дистрибутивами Linux, поэтому может потребоваться установка дополнительных инструментов. Пример для CentOS 6:

# Install system dependencies
sudo yum install -y byacc patch automake libtool make which file ncurses-devel gettext-devel unzip bzip2 zip util-linux wget git python2

# Install autoconf-2.69
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz && \
tar zxf autoconf-2.69.tar.gz && \
cd autoconf-2.69 && \
./configure && \
make && \
make install

# Install bison-3.8.2
wget http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz && \
tar xzf bison-3.8.2.tar.gz && \
cd bison-3.8.2 && \
./configure && \
make && \
make install

1.4 Скачивание исходного кода Doris и настройка переменных окружения​

git clone https://github.com/apache/doris.git

Перейдите в каталог исходного кода и создайте файл custom_env.sh со следующими переменными окружения:

export JAVA_HOME=/path/to/java/
export PATH=$JAVA_HOME/bin:$PATH
export PATH=/path/to/maven/bin:$PATH
export PATH=/path/to/node/bin:$PATH
export PATH=/path/to/ldb_toolchain/bin:$PATH

2. Компиляция Doris​

подсказка

По умолчанию build.sh сначала компилирует сторонние библиотеки. Чтобы пропустить их компиляцию, см. раздел 3. Ускорение сборки с помощью предварительно собранных сторонних библиотек.

2.1 Проверка поддержки AVX2​

cat /proc/cpuinfo | grep avx2

Непустой вывод означает, что CPU поддерживает AVX2.

2.2 Запуск компиляции​

# By default, build artifacts that support AVX2
sh build.sh

# When the CPU does not support AVX2, append USE_AVX2=0
USE_AVX2=0 sh build.sh

# Compile the Debug version of BE
BUILD_TYPE=Debug sh build.sh

Скрипт последовательно компилирует сторонние библиотеки, FE, BE и MS, а затем записывает артефакты в каталог output/. Модуль MS используется в режиме разделения хранения и вычислений. Подробности см. в соответствующей документации.

3. Ускорение сборки с помощью предварительно собранных сторонних библиотек​

По умолчанию build.sh компилирует сторонние библиотеки из исходного кода, что занимает много времени. Также можно напрямую скачать предварительно собранную сообществом версию:

https://github.com/apache/doris-thirdparty/releases

Сообщество предоставляет предварительно собранные артефакты для Linux, macOS и ARM. После скачивания и распаковки архива вы получите каталог installed/. Скопируйте его в каталог thirdparty/ исходного кода Doris, затем запустите build.sh, чтобы пропустить компиляцию сторонних библиотек.

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

Вопрос 1: Как выбрать версию LDB Toolchain?​

Следуйте таблице: используйте 0.25 для ветки master и 0.19 для веток 3.1, 3.0 и 2.1. Неподходящая версия может привести к несовместимости ABI и ошибкам компоновки.

Вопрос 2: Что делать, если cat /proc/cpuinfo | grep avx2 ничего не выводит?​

CPU не поддерживает AVX2. Добавьте USE_AVX2=0 при компиляции и используйте предварительно собранные сторонние библиотеки или образы для компиляции с суффиксом -no-avx2.

Вопрос 3: Что делать, если во время компиляции возникает ошибка Too many open files?​

Увеличьте лимит файловых дескрипторов с помощью ulimit -n 65536 или задайте его в /etc/security/limits.conf, чтобы изменение сохранялось постоянно.

Вопрос 4: Что следует учитывать при компиляции на ARM?​

Скачайте ldb_toolchain_gen.aarch64.sh. Инструкции по отключению AVX2, libunwind, Azure и других несовместимых сторонних библиотек см. в разделе Компиляция для платформы ARM.