본문으로 건너뛰기
최종 수정: 에

IntelliJ IDEA로 FE 개발 환경 설정하기

이 문서는 Linux, macOS, Windows에서 IntelliJ IDEA를 사용해 Doris FE(Frontend) 개발 및 디버깅 환경을 설정하는 방법을 설명합니다.

1. 환경 준비​

필수 사항: JDK 1.8+, IntelliJ IDEA.

1.1 소스 코드 가져오기​

GitHub에서 Doris 소스 코드를 로컬 머신으로 다운로드합니다:

git clone https://github.com/apache/doris.git
macOS 사용자 참고 사항

IDEA에서 프로젝트를 열 때는 전체 Doris 저장소의 루트 대신 소스 트리 아래의 fe 하위 디렉터리를 직접 여는 것이 좋습니다. 이렇게 하면 나중에 be 디렉터리를 여는 CLion과의 충돌을 방지할 수 있습니다.

1.2 Thrift 설치​

FE 개발만 진행하고 thirdparty 전체를 빌드하지 않았다면, Thrift를 별도로 설치한 후 thirdparty/installed/bin 디렉터리에 복사하거나 심볼릭 링크를 만들어야 합니다.

Doris 버전호환되는 Thrift 버전
0.15 ~ 1.20.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​

  1. 다운로드: http://archive.apache.org/dist/thrift/0.16.0/thrift-0.16.0.exe
  2. ./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를 실행합니다.

IDEA UI에서 해당 Maven 명령을 실행할 수도 있습니다:

Windows​

Windows에서는 make나 셸 스크립트를 실행할 수 없는 경우가 있습니다. 다음 방법 중 하나를 사용합니다:

  • Linux 머신에서 생성한 fe/fe-core/target/generated-sources 디렉터리를 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 프로젝트 가져오기​

IDEA에서 fe 프로젝트를 가져옵니다.

4.2 디렉터리 준비​

디버깅에 필요한 디렉터리를 fe 디렉터리 아래에 만듭니다(최신 버전에서는 이 디렉터리가 이미 존재할 수 있습니다):

4.3 UI 빌드(선택 사항)​

ui 프로젝트를 빌드하고 ui/dist/ 디렉터리의 파일을 webroot에 복사합니다. Doris UI를 볼 필요가 없다면 이 단계를 건너뛸 수 있습니다.

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
macOS에서 Docker로 BE 실행

macOS에서 Docker for Mac을 통해 BE를 실행할 때는 docker for Mac이 Host 모드를 지원하지 않으므로 -p로 BE 포트를 노출해야 합니다. 또한 priority_networks를 fe.conf에 설정할 때는 컨테이너 내부에서 접근할 수 있는 IP(예: Wi-Fi IP)를 지정해야 합니다.

4.5 IDEA 실행 환경 변수 설정​

IDEA에서 실행 환경 변수를 설정합니다:

macOS의 설정 예시입니다(DORIS_HOME 환경 변수는 따로 복사해 둔 Doris 런타임 디렉터리를 가리킵니다):

환경 변수예시 값설명
JAVA_OPTS-Xmx8092mJVM 힙 매개변수
LOG_DIR~/DorisDev/doris-run/fe/logFE 로그 디렉터리
PID_DIR~/DorisDev/doris-run/fe/logPID 파일 디렉터리
DORIS_HOME~/DorisDev/doris-run/feFE 런타임 디렉터리(소스 디렉터리가 아님)
JAVA_OPTS=-Xmx8092m
LOG_DIR=~/DorisDev/doris-run/fe/log
PID_DIR=~/DorisDev/doris-run/fe/log
DORIS_HOME=~/DorisDev/doris-run/fe

mac-idea-deployment5

4.6 옵션 수정 설정​

일부 의존성은 범위가 provided로 지정되어 있으므로 IDEA에서 별도 설정이 필요합니다. Run/Debug Configurations에서 오른쪽의 Modify options를 클릭하고 Add dependencies with "provided" scope to classpath를 선택합니다.

5. FE 시작​

Run 또는 Debug를 클릭합니다. IDEA가 컴파일을 시작하고, 컴파일이 완료되면 FE가 시작됩니다.

mac-idea-deployment6

이제 FE 개발 및 디버깅을 시작할 수 있습니다.

6. 자주 묻는 질문(FAQ)​

Q1: 시작 시 ClassNotFoundException이 발생하거나 일부 의존성을 찾을 수 없음​

Add dependencies with "provided" scope to classpath가 Run/Debug Configurations에서 선택되어 있지 않습니다. 4.6절을 참고해 해결합니다.

Q2: generated-source.sh에서 thrift 버전 불일치를 보고함​

thirdparty/installed/bin/thrift의 버전이 Doris 버전과 일치하지 않습니다. 1.2절의 버전 매핑 테이블에 따라 다시 설치합니다.

Q3: 시작 후 BE 또는 클라이언트에서 FE에 접근할 수 없음​

priority_networks가 fe.conf에서 로컬 머신이나 컨테이너가 접근할 수 있는 서브넷으로 설정되어 있는지 확인합니다. macOS + Docker BE 환경에서는 4.4절의 참고 사항을 확인합니다.