Настройка среды разработки FE в IntelliJ IDEA
В этом документе описана настройка среды разработки и отладки Doris FE (Frontend) в IntelliJ IDEA на Linux, macOS и Windows.
1. Подготовка окружения
Требования: JDK 1.8+, IntelliJ IDEA.
1.1 Получение исходного кода
Загрузите исходный код Doris из GitHub на локальный компьютер:
git clone https://github.com/apache/doris.git
При открытии проекта в IDEA рекомендуется открывать непосредственно подкаталог fe в дереве исходного кода, а не корневой каталог всего репозитория Doris. Это позволит избежать последующих конфликтов с CLion (в котором открывается каталог be).
1.2 Установка Thrift
Если вы занимаетесь только разработкой FE и не собирали полностью thirdparty, необходимо отдельно установить Thrift и скопировать его либо создать символическую ссылку на него в каталоге thirdparty/installed/bin.
| Версия Doris | Соответствующая версия Thrift |
|---|---|
| 0.15 ~ 1.2 | 0.13.0 |
| 1.2+ | 0.16.0 |
Далее в качестве примера используется 0.16.0; для 0.13.0 порядок действий такой же.
macOS
brew tap homebrew/core --force
brew tap-new $USER/local-tap
brew extract --version='0.16.0' thrift $USER/local-tap
brew install thrift@0.16.0
Если загрузка не удалась, можно отредактировать файл:
/usr/local/Homebrew/Library/Taps/$USER/homebrew-local-tap/Formula/thrift@0.16.0.rb
Замените:
url "https://www.apache.org/dyn/closer.lua?path=thrift/0.16.0/thrift-0.16.0.tar.gz"
на:
url "https://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz"
Дополнительная информация: https://gist.github.com/tonydeng/02e571f273d6cce4230dc8d5f394493c
Linux
wget https://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.tar.gz
yum install -y autoconf automake libtool cmake ncurses-devel openssl-devel lzo-devel zlib-devel gcc gcc-c++
tar zxvf thrift-0.16.0.tar.gz
cd thrift-0.16.0
./configure --without-tests
make
make install
После установки проверьте версию:
thrift --version
Windows
- Загрузите файл: http://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.exe
- Скопируйте его в
./thirdparty/installed/bin
Если вы уже выполнили полную сборку Doris, повторная установка Thrift не требуется. Можно напрямую использовать
$DORIS_HOME/thirdparty/installed/bin/thrift.
2. Генерация кода
Linux / macOS
Выполните следующую команду в корневом каталоге исходного кода:
sh generated-source.sh
Дождитесь появления сообщения Done.
В версиях 1.2 и более ранних используется команда
cd fe && mvn generate-sources. При возникновении ошибки выполнитеcd fe && mvn clean install -DskipTests.
Соответствующую команду Maven можно также выполнить в интерфейсе IDEA:

Windows
В Windows выполнение make или скриптов оболочки может быть недоступно. Используйте один из следующих способов:
- Скопируйте сгенерированный каталог
fe/fe-core/target/generated-sourcesс компьютера под управлением Linux в соответствующее расположение в Windows. - Смонтируйте локальный каталог в Docker и выполните генерацию кода внутри Docker (см. Сборка из исходного кода).
3. Генерация справочной документации
Если справочная документация ещё не сгенерирована, выполните:
cd doris/docs
sh build_help_zip.sh
cp build/help-resource.zip ../fe/fe-core/target/classes
4. Настройка отладки в IDEA
4.1 Импорт проекта
Импортируйте проект fe в IDEA.
4.2 Подготовка каталогов
В каталоге fe создайте необходимые для отладки каталоги (в новых версиях этот каталог может уже существовать):

4.3 Сборка UI (необязательно)
Соберите проект ui и скопируйте файлы из каталога ui/dist/ в webroot. Этот шаг можно пропустить, если вам не нужен доступ к интерфейсу Doris.
4.4 Настройка fe.conf
Ниже приведён пример конфигурации conf/fe.conf, которую можно изменить в соответствии с вашими потребностями:
LOG_DIR = ${DORIS_HOME}/log
DATE = `date +%Y%m%d-%H%M%S`
JAVA_OPTS="-Xmx2048m -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"
# For jdk 9+, this JAVA_OPTS will be used as default JVM options
JAVA_OPTS_FOR_JDK_9="-Xmx4096m -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xlog:gc*:$DORIS_HOME/log/fe.gc.log.$DATE:time"
sys_log_level = INFO
http_port = 8030
rpc_port = 9020
query_port = 9030
arrow_flight_sql_port = -1
edit_log_port = 9010
# priority_networks = 10.10.10.0/24;192.168.0.0/16
Если вы запускаете BE на macOS через Docker for Mac, учтите, что docker for Mac не поддерживает режим Host, поэтому порты BE необходимо опубликовать с помощью -p. Кроме того, параметр priority_networks в fe.conf должен указывать IP-адрес, доступный из контейнера (например, IP-адрес интерфейса Wi-Fi).
4.5 Настройка переменных окружения для запуска в IDEA
Задайте переменные окружения для запуска в IDEA:

Пример конфигурации для macOS (переменная окружения DORIS_HOME указывает на каталог среды выполнения Doris, который вы скопировали):
| Переменная окружения | Пример значения | Описание |
|---|---|---|
JAVA_OPTS | -Xmx8092m | Параметры кучи JVM |
LOG_DIR | ~/DorisDev/doris-run/fe/log | Каталог журналов FE |
PID_DIR | ~/DorisDev/doris-run/fe/log | Каталог файлов PID |
DORIS_HOME | ~/DorisDev/doris-run/fe | Каталог среды выполнения FE (не каталог исходного кода) |
JAVA_OPTS=-Xmx8092m
LOG_DIR=~/DorisDev/doris-run/fe/log
PID_DIR=~/DorisDev/doris-run/fe/log
DORIS_HOME=~/DorisDev/doris-run/fe

4.6 Настройка дополнительных параметров
Поскольку некоторые зависимости имеют область действия provided, в IDEA требуется специальная настройка: в окне Run/Debug Configurations нажмите Modify options справа и установите флажок Add dependencies with "provided" scope to classpath.

5. Запуск FE
Нажмите Run или Debug. IDEA начнёт компиляцию, после завершения которой запустится FE.

Теперь можно приступать к разработке и отладке FE.
6. Часто задаваемые вопросы (FAQ)
Вопрос 1: При запуске возникает ClassNotFoundException или не удаётся найти некоторые зависимости
Флажок Add dependencies with "provided" scope to classpath не был установлен в Run/Debug Configurations. Решение см. в разделе 4.6.
Вопрос 2: generated-source.sh сообщает о несовпадении версии Thrift
Версия thirdparty/installed/bin/thrift не соответствует вашей версии Doris. Переустановите Thrift согласно таблице соответствия версий в разделе 1.2.
Вопрос 3: После запуска FE недоступен для BE или клиентов
Проверьте, задана ли для priority_networks в fe.conf подсеть, доступная с локального компьютера или из контейнера. Если BE запущен в Docker на macOS, см. примечание в разделе 4.4.