構建和調試 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 ~/.bashrcsource ~/.zshrc以應用更改。

安裝 Thrift

注意:僅在您僅調試 FE(前端)時需要安裝 Thrift。當調試 BE(後端)和 FE 時,BE 第三方庫已包含 Thrift。

Plain Text

 

擷取您的程式碼

通過執行以下命令克隆您的程式碼:

PowerShell

 

設置環境變量

PowerShell

 

下載 Doris 構建依賴項

1. 訪問 Apache Doris 第三方預構建 頁面(鏈接)以找到所有第三方庫的源代碼。您可以直接下載 doris-thirdparty-source.tgz

2. 或者,您可以從同一頁面下載預編譯的第三方庫,這樣可以避免自行編譯這些庫。參考以下命令。

PowerShell

 

運行 protocthrift 時,您可能會遇到由於開發者驗證問題而無法打開它們的問題。在這種情況下,請前往 安全性與隱私,並在一般選項卡中點擊 仍要打開 按鈕以確認您要打開該二進位文件。有關更多詳情,請參閱 蘋果支持

增加系統最大文件描述符限制

修改後,運行對應文件上的 source 以應用更改。

PowerShell

 

2. 編譯 Doris

進入您的 Doris 主目錄並運行構建腳本:

PowerShell

 

如果要加快構建過程並且不需要 FE 前端頁面,可以在 build.sh 腳本中註釋掉 FE UI 構建部分:

Shell

 

成功編譯後,您應該看到類似以下的輸出:

3. 调试

配置调试环境

此指南涵盖了调试 Doris 前端的过程。

Plain Text

 

使用 IntelliJ IDEA 开始调试。

重要提示:不要打开 Doris 项目的根目录,而是打开 FE 目录,以避免与 CLion 发生冲突。

生成 FE 代码

打开 IDEA 终端,导航至代码的根目录,并执行:

PowerShell

 

等待看到“完成”消息。

配置 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 語法遷移任務,您可以使用調試來迭代改進您的代碼。

常見問題

問題 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