构建和调试 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 FE。

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