Apache Doris를 빌드하고 디버깅하는 포괄적인 가이드

Apache Doris는 고성능 실시간 분석 데이터베이스로, 인상적인 기본 아키텍처와 코드 설계를 자랑합니다. 개발자에게는 소스 코드 컴파일 및 디버깅을 마스터하는 것이 Doris의 핵심을 이해하는 데 중요합니다. 그러나 빌드 과정에는 여러 도구 체인과 의존성 구성 요소가 포함되어 있으며, 디버깅 중에는 초보자를 압도할 수 있는 다양한 복잡한 문제에 직면할 수 있습니다.

이 문서는 소스 코드에서 실행 시간까지의 과정을 안내하며, Apache Doris의 컴파일 및 디버깅 절차에 대한 자세한 분석을 제공합니다. 환경 설정과 코드 체크아웃부터 일반적인 문제 해결까지 실용적인 예제를 결합하여 Doris 개발 및 디버깅을 빠르게 시작할 수 있도록 도와줍니다.

개요

SQL 쿼리가 처음부터 끝까지 어떻게 파싱되고 실행되는지 궁금하셨나요? Apache Doris에서는 이 과정이 여러 핵심 구성 요소와 복잡한 내부 메커니즘을 포함합니다. 이 문서는 소스 코드에서 실행 시간까지의 여정을 안내하며, Doris의 빌드 및 디버깅 과정에 대한 포괄적인 분석을 제공하고 SQL 실행 원리에 대한 깊은 이해를 도와줍니다.

1. 환경

기본 환경

  1. 컴퓨터 구성. MacBook Pro (칩: Apple M1, macOS: 15.1)
  2. JDK. 버전 17
  3. Doris 브랜치. Doris Master 브랜치 사용 (특히, branch-2.1)

환경 종속성 설치

Homebrew를 사용할 때, 설치된 JDK 버전은 17입니다. 이는 macOS의 arm64 버전의 Homebrew가 기본적으로 JDK 8을 포함하지 않기 때문입니다. 현재 Doris는 JDK8과 JDK17만 지원합니다.

PowerShell

 

종속성 설명

1. Java, Maven 등. 이러한 것들은 더 쉽게 관리하기 위해 별도로 다운로드할 수 있습니다.

  • macOS에서는 Zulu JDK17을 권장합니다.
  • Maven은 공식 Maven 웹사이트에서 다운로드할 수 있습니다.
  • 수동으로 다운로드한 Java와 Maven은 환경 변수에 설정해야 합니다.

2. 기타 종속성의 환경 변수 (Apple Silicon Mac의 예):

PowerShell

 

위의 설정을 ~/.bashrc 또는 ~/.zshrc 파일에 추가하고 source ~/.bashrc 또는 source ~/.zshrc를 실행하여 변경 사항을 적용합니다.

Thrift 설치

참고: Thrift는 FE(프론트엔드)만 디버깅할 때만 설치해야 합니다. BE(백엔드)와 FE를 모두 디버깅할 때는 BE의 서드파티 라이브러리에 이미 Thrift가 포함되어 있습니다.

Plain Text

 

코드 가져오기

다음 명령어를 실행하여 코드를 클론합니다:

PowerShell

 

환경 변수 설정

PowerShell

 

도리스 빌드 종속성 다운로드

1. 모든 서드파티 라이브러리의 소스 코드를 찾기 위해 아파치 도리스 써드파티 빌드 페이지(링크)를 방문하세요. 직접 doris-thirdparty-source.tgz를 다운로드할 수 있습니다.

2. 또는 동일한 페이지에서 미리 컴파일된 써드파티 라이브러리를 다운로드하여 직접 컴파일하는 번거로움을 덜 수 있습니다. 아래 명령어를 참조하세요.

PowerShell

 

protocthrift를 실행할 때 개발자 확인 문제로 열 수 없는 문제가 발생할 수 있습니다. 이 경우에는 보안 및 개인 정보로 이동하여 일반 탭에서 그래도 열기 버튼을 클릭하여 이진 파일을 열고자 하는 것을 확인하세요. 자세한 내용은 애플 지원을 참조하세요.

시스템 최대 파일 디스크립터 제한 증가

수정한 후 해당 파일에서 source를 실행하여 변경 사항을 적용하세요.

PowerShell

 

2. 도리스 컴파일

도리스 홈 디렉토리로 이동하고 빌드 스크립트를 실행하세요:

PowerShell

 

빌드 프로세스를 가속화하고 FE 프런트엔드 페이지가 필요하지 않은 경우, build.sh 스크립트에서 FE UI 빌드 섹션을 주석 처리할 수 있습니다:

Shell

 

성공적인 컴파일 후 다음과 유사한 출력이 표시되어야 합니다:

3. 디버깅

디버그 환경 구성

이 안내서는 Doris FE의 디버깅을 다룹니다.

Plain Text

 

IntelliJ IDEA를 사용하여 디버깅을 시작합니다. 

중요: Doris 프로젝트의 루트 디렉토리를 열지 마십시오. 대신, CLion과의 충돌을 피하기 위해 FE 디렉토리를 엽니다.

FE 코드 생성

IDEA 터미널을 열고 코드의 루트 디렉토리로 이동하여 다음을 실행합니다:

PowerShell

 

“Done” 메시지가 표시될 때까지 기다립니다.

FE를 위한 디버그 설정

1. 구성 편집.

2. DorisFE 구성 추가. 상단 왼쪽의 + 아이콘을 클릭하여 애플리케이션 구성을 추가합니다. 구체적인 설정은 아래 이미지를 참조하십시오.

3. 작업 디렉토리. 소스 코드 내 fe 디렉토리로 설정합니다.

4. 환경 변수. Doris 루트 디렉토리의 fe/bin/start_fe.sh에서 내보낸 환경 변수와 유사하게 구성합니다. DORIS_HOME 변수는 설정 중에 앞서 복사한 디렉토리를 가리켜야 합니다.

Plain Text

 


FE 시작

실행 또는 디버그를 클릭합니다. 이렇게 하면 FE를 빌드하고 완료되면 FE가 시작됩니다. 이 안내서에서는 디버그를 선택합니다.


BE 시작

이미 컴파일된 패키지를 doris-run 디렉토리로 복사했으므로 해당 디렉토리에서 BE를 시작합니다:

PowerShell

 

FE 디버깅

1. FE에 연결. MySQL 클라이언트 또는 DBeaver를 사용하여 IDEA에서 시작된 FE에 연결합니다.

MySQL

 

2. BE 노드를 클러스터에 추가.

MySQL

 

3. 코드에 중단점 설정. 프로젝트에서 ConnectProcessor 코드를 찾습니다:


handleQuery 메소드에 중단점을 설정합니다. 쿼리를 실행하면 디버거가 중단점에 도달하고 즐거운 디버깅 여행을 시작할 수 있습니다. 이전 세션에서 언급된 Doris 구문 이전 작업을 수행 중이라면 디버깅을 사용하여 코드를 반복적으로 개선할 수 있습니다.

FAQs

질문 1

컴파일 중에 잠금 충돌 오류가 발생할 수 있습니다:

Plain Text

 

답변

로컬 Maven 저장소에서 .lock 파일을 삭제하면 됩니다. 다음 명령을 실행합니다:

Plain Text

 

질문 2

컴파일 중에 더 높은 버전의 Node.js로 인한 오류가 발생할 수 있습니다:

Plain Text

 

답변

다음을 실행하여 Node.js를 레거시 OpenSSL 공급자로 설정합니다:

Plain Text

 

참고: StackOverflow 토론

질문 3

IntelliJ IDEA가 FE를 시작하지 못할 때 오류가 발생할 수 있습니다:

Plain Text

 

답변

Maven의 컴파일러에 충분한 메모리가 할당되지 않을 수 있습니다. 아래와 같이 메모리 할당량을 늘려주세요:

질문 5

IntelliJ IDEA가 FE를 시작하지 못하고 다음 오류가 발생합니다:

Plain Text

 

답변

다음 명령어를 Doris 루트 디렉토리에서 실행하여 이 문제를 해결할 수 있습니다:

Plain Text

 

질문 5

일부 버전에서 컴파일 중에 다음 오류가 발생할 수 있습니다:

Plain Text

 

답변

PR에 따라 코드를 수정하거나 다음 명령어를 실행하세요:

Plain Text

 

질문 6

디버깅 중에 일부 버전에서 포트 9030에서 FE를 시작하지 못하고 fe.log이 다음을 보고합니다:

Plain Text

 

답변

doris/docs 디렉토리로 이동하여 다음 명령어를 실행한 다음 FE를 다시 시작하세요:

Plain Text

 

이 안내에 따라 환경을 설정하고 Apache Doris를 더 쉽게 컴파일하고 디버깅할 수 있습니다. 즐거운 디버깅하세요!

Source:
https://dzone.com/articles/guide-to-building-and-debugging-apache-doris