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

CLion으로 BE 개발 환경 설정하기

이 문서에서는 BE(Backend)를 위한 두 가지 일반적인 CLion 개발 방식을 설명합니다.

  • 옵션 1: 원격 개발(권장). 로컬 CLion에서 SSH/SFTP를 통해 원격 Linux 서버에 연결하고, 코드를 원격 서버에 동기화하여 컴파일하고 실행합니다. BE는 완전한 Linux 툴체인을 필요로 하므로, 이 방식이 가장 일반적인 Doris BE 개발 환경 구성입니다.
  • 옵션 2: macOS 로컬 개발. 원격 서버 없이 macOS에서 직접 BE를 컴파일하고 디버깅합니다.

옵션 1: 원격 개발(Linux)​

1. 원격 서버에서 코드 다운로드 및 컴파일​

원격 Linux 서버에서 Doris를 다운로드하고 컴파일합니다.

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

env.sh를 편집하여 파일 상단에 DORIS_HOME 설정을 추가합니다. 예를 들면 다음과 같습니다.

DORIS_HOME=/mnt/datadisk0/chenqi/doris

빌드를 실행합니다. 자세한 과정은 LDB Toolchain으로 컴파일을 참조하세요.

./build.sh

2. 로컬 CLion에서 원격 개발 환경 구성​

  1. 로컬에 CLion을 다운로드하여 설치한 다음, Doris BE 코드를 가져옵니다.

  2. CLion에서 환경 설정 → 빌드, 실행, 배포 → 배포를 열고 SFTP를 사용하여 원격 개발 서버의 로그인 정보를 추가합니다. 매핑 경로를 설정합니다. 예를 들면 다음과 같습니다.

    • 로컬 경로: /User/kaka/Programs/doris/be
    • 배포 경로: /mnt/datadisk0/chenqi/clion/doris/be

    배포1

    배포2

  3. 원격 서버에서 컴파일 중 생성된 gensrc 디렉터리를 배포 경로의 상위 디렉터리에 복사합니다.

    cp -R /mnt/datadisk0/chenqi/doris/gensrc /mnt/datadisk0/chenqi/clion/doris/gensrc
  4. 환경 설정 → 빌드, 실행, 배포 → 툴체인을 열고 원격 환경의 툴체인(CMake, GCC, G++, GDB 등)을 추가합니다.

    중요

    환경 파일 필드에 원격 서버의 Doris 코드에 있는 env.sh 파일 경로를 입력합니다.

    툴체인

  5. 환경 설정 → 빌드, 실행, 배포 → CMake를 열고 CMake 옵션에 다음을 추가합니다.

    -DDORIS_JAVA_HOME=/path/to/remote/JAVA_HOME

    이 값을 원격 서버의 JAVA_HOME 경로로 설정합니다. 그렇지 않으면 jni.h를 찾을 수 없습니다.

  6. CLion에서 마우스 오른쪽 버튼을 클릭하고 CMake 프로젝트 불러오기를 선택합니다. 이 작업은 코드를 원격 서버에 동기화하고 CMake 빌드 파일을 생성합니다.

3. 로컬 CLion에서 원격 BE 실행 및 디버깅​

  1. 환경 설정 → 빌드, 실행, 배포 → CMake에서 CMake를 구성합니다. Debug 또는 Release 같은 다양한 타깃을 구성하고, 툴체인을 앞서 구성한 원격 툴체인으로 설정할 수 있습니다.

    단위 테스트를 실행하고 디버깅하려면 CMake 옵션에 -DMAKE_TEST=ON을 추가합니다. 기본적으로는 비활성화되어 있습니다.

  2. 원격 서버에서 output 디렉터리를 별도의 경로에 복사합니다.

    cp -R /mnt/datadisk0/chenqi/doris/output /mnt/datadisk0/chenqi/clion/doris/doris_be

    출력 디렉터리 트리

  3. CLion에서 doris_be 타깃(Debug 또는 Release)을 선택하고 구성합니다. be/bin/start_be.sh에서 내보내는 환경 변수를 참고하여 각 변수가 원격 서버의 해당 경로를 가리키도록 설정합니다.

    실행 및 디버그 구성1 실행 및 디버그 구성2

  4. 실행을 클릭하여 BE를 컴파일하고 시작하거나, 디버그를 클릭하여 BE를 컴파일하고 디버깅합니다.

옵션 2: macOS 로컬 개발​

macOS에서는 원격 서버 없이 로컬에서 BE를 컴파일하고 디버깅할 수 있습니다. 시작하기 전에 macOS에서 컴파일에 설명된 의존성 설치와 코드 체크아웃을 완료하세요.

1. Doris 소스 루트 디렉터리 열기​

배포1

2. CLion 구성​

툴체인 구성: 아래 그림에 따라 구성합니다. 모든 항목이 정상적으로 감지되어야 합니다.

배포2

CMake 구성: 아래 그림에 따라 구성합니다.

배포3

구성을 확인하면 CLion이 처음에 CMake 파일을 자동으로 불러옵니다. 자동으로 불러오지 않으면 $DORIS_HOME/be/CMakeLists.txt를 마우스 오른쪽 버튼으로 클릭하고 불러오기를 선택합니다.

3. BE 디버그 구성​

구성 편집을 선택합니다.

배포4

doris_be의 환경 변수를 추가합니다. be/bin/start_be.sh에서 내보내는 환경 변수를 참고하세요. 환경 변수의 Doris 디렉터리 값은 별도로 복사해 둔 런타임 디렉터리를 가리켜야 합니다. 참고할 환경 변수는 다음과 같습니다.

환경 변수값 예시설명
JAVA_OPTS-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000JVM 시작 인수
LOG_DIR~/DorisDev/doris-run/be/logBE 로그 디렉터리
NLS_LANGAMERICAN_AMERICA.AL32UTF8Oracle JDBC 인코딩
ODBCSYSINI~/DorisDev/doris-run/be/confODBC 설정 디렉터리
PID_DIR~/DorisDev/doris-run/be/logPID 파일 디렉터리
UDF_RUNTIME_DIR~/DorisDev/doris-run/be/lib/udf-runtimeUDF 런타임 디렉터리
DORIS_HOME~/DorisDev/doris-run/beBE 런타임 디렉터리
JAVA_OPTS=-Xmx1024m -DlogPath=$DORIS_HOME/log/jni.log -Dsun.java.command=DorisBE -XX:-CriticalJNINatives -DJDBC_MIN_POOL=1 -DJDBC_MAX_POOL=100 -DJDBC_MAX_IDLE_TIME=300000
LOG_DIR=~/DorisDev/doris-run/be/log
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
ODBCSYSINI=~/DorisDev/doris-run/be/conf
PID_DIR=~/DorisDev/doris-run/be/log
UDF_RUNTIME_DIR=~/DorisDev/doris-run/be/lib/udf-runtime
DORIS_HOME=~/DorisDev/doris-run/be

배포5 배포6

4. 디버깅 시작​

실행 또는 디버그를 클릭합니다. CLion이 컴파일을 시작하고, 컴파일이 완료되면 BE가 시작됩니다.

배포7

자주 묻는 질문​

Q1: 원격 컴파일 시 jni.h not found 오류 발생​

CMake 옵션의 -DDORIS_JAVA_HOME이 원격 서버의 JAVA_HOME으로 올바르게 설정되지 않았습니다. 옵션 1의 2절에 있는 5단계를 참조하세요.

Q2: CLion에서 심볼을 찾지 못하거나 빨간 밑줄이 많이 표시됨​

gensrc 디렉터리를 배포 경로의 상위 디렉터리에 복사하지 않았거나, CMake 프로젝트 불러오기를 클릭하여 다시 불러오지 않았습니다.

Q3: BE가 시작 직후 종료됨​

환경 변수 DORIS_HOME, PID_DIR 또는 LOG_DIR이 설정되지 않았거나 경로가 존재하지 않습니다. 위의 환경 변수 테이블을 확인하세요. 모든 경로를 미리 생성해야 합니다.