返回介绍

下载

编译与部署

开始使用

操作手册

最佳实践

扩展功能

设计文档

SQL 手册

开发者手册

Apache 社区

Apache Doris Be 开发调试

发布于 2021-09-30 01:42:49 字数 11750 浏览 1075 评论 0 收藏 0

前期准备工作

本教程是在 Ubuntu 20.04 下进行的

  1. 下载 doris 源代码

    下载地址为:apache/incubator-doris: Apache Doris (Incubating) (github.com)

  2. 安装 GCC 8.3.1+,Oracle JDK 1.8+,Python 2.7+,确认 gcc, java, python 命令指向正确版本, 设置 JAVA_HOME 环境变量

  3. 安装其他依赖包

sudo apt install build-essential openjdk-8-jdk maven cmake byacc flex automake libtool-bin bison binutils-dev libiberty-dev zip unzip libncurses5-dev curl git ninja-build python brotli
sudo add-apt-repository ppa:ubuntu-toolchain-r/ppa
sudo apt update
sudo apt install gcc-10 g++-10 
sudo apt-get install autoconf automake libtool autopoint
  1. 安装 openssl-devel
sudo apt install -y openssl-devel

编译

以下操作步骤在 /home/workspace 目录下进行

  1. 下载源码
git clone https://github.com/apache/incubator-doris.git
  1. 编译第三方依赖包
 cd /home/workspace/incubator-doris/thirdparty
 ./build-thirdparty.sh
  1. 编译doris产品代码
cd /home/workspace/incubator-doris
./build.sh

注意:这个编译有以下几条指令:

./build.sh  #同时编译be 和fe
./build.sh  --be #只编译be
./build.sh  --fe #只编译fe
./build.sh  --fe --be#同时编译be fe
./build.sh  --fe --be --clean#删除并同时编译be fe
./build.sh  --fe  --clean#删除并编译fe
./build.sh  --be  --clean#删除并编译be
./build.sh  --be --fe  --clean#删除并同时编译be fe

如果不出意外,应该会编译成功,最终的部署文件将产出到 /home/workspace/incubator-doris/output/ 目录下。如果还遇到其他问题,可以参照 doris 的安装文档 http://doris.apache.org。

部署调试

  1. 给be编译结果文件授权
chmod  /home/workspace/incubator-doris/output/be/lib/palo_be

注意: /home/workspace/incubator-doris/output/be/lib/palo_be为be的执行文件。

  1. 创建数据存放目录

通过查看/home/workspace/incubator-doris/output/be/conf/be.conf

# INFO, WARNING, ERROR, FATAL
sys_log_level = INFO
be_port = 9060
be_rpc_port = 9070
webserver_port = 8040
heartbeat_service_port = 9050
brpc_port = 8060

# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/
# Default value is empty.
priority_networks = 192.168.59.0/24 # data root path, seperate by ';'
storage_root_path = /soft/be/storage 
# sys_log_dir = ${PALO_HOME}/log
# sys_log_roll_mode = SIZE-MB-
# sys_log_roll_num =
# sys_log_verbose_modules =
# log_buffer_level = -
# palo_cgroups

需要创建一个文件夹,这是be数据存放的地方

mkdir -p /soft/be/storage
  1. 打开 vscode,并打开 be 源码所在目录,在本案例中打开目录为 /home/workspace/incubator-doris/

  2. 安装 vscode ms c++ 调试插件

  1. 创建 launch.json 文件,文件内容如下:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/workspace/incubator-doris/output/be/lib/palo_be",
            "args": [],
            "stopAtEntry": false,
            "cwd": "/home/workspace/incubator-doris/",
            "environment": [{"name":"PALO_HOME","value":"/home/workspace/incubator-doris/output/be/"},
                            {"name":"UDF_RUNTIME_DIR","value":"/home/workspace/incubator-doris/output/be/lib/udf-runtime"},
                            {"name":"LOG_DIR","value":"/home/workspace/incubator-doris/output/be/log"},
                            {"name":"PID_DIR","value":"/home/workspace/incubator-doris/output/be/bin"}
                           ],
            "externalConsole": true,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

其中,environment 定义了几个环境变量 DORIS_HOME UDF_RUNTIME_DIR LOG_DIR PID_DIR,这是 palo_be 运行时需要的环境变量,如果没有设置,启动会失败。

注意:如果希望是attach(附加进程)调试,配置代码如下:

{
    "version": "0.2.0",
    "configurations": [
          {
          "name": "(gdb) Launch",
          "type": "cppdbg",
          "request": "attach",
          "program": "/home/workspace/incubator-doris/output/lib/palo_be",
          "processId":,
          "MIMode": "gdb",
          "internalConsoleOptions":"openOnSessionStart",
          "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

配置中 "request": "attach", "processId":PID,这两个配置是重点: 分别设置 gdb 的调试模式为 attach,附加进程的processId,否则会失败。如何查找进程id,可以在命令行中输入以下命令:

ps -ef | grep palo*

如图:

其中的15200即为当前运行的 be 的进程 id.

一个完整的 lainch.json 的例子如下:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Attach",
            "type": "cppdbg",
            "request": "attach",
            "program": "/home/workspace/incubator-doris/output/be/lib/palo_be",
            "processId": 17016,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/workspace/incubator-doris/output/be/lib/palo_be",
            "args": [],
            "stopAtEntry": false,
            "cwd": "/home/workspace/incubator-doris/output/be",
            "environment": [
                {
                    "name": "DORIS_HOME",
                    "value": "/home/workspace/incubator-doris/output/be"
                },
                {
                    "name": "UDF_RUNTIME_DIR",
                    "value": "/home/workspace/incubator-doris/output/be/lib/udf-runtime"
                },
                {
                    "name": "LOG_DIR",
                    "value": "/home/workspace/incubator-doris/output/be/log"
                },
                {
                    "name": "PID_DIR",
                    "value": "/home/workspace/incubator-doris/output/be/bin"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}
  1. 点击调试即可

    下面就可以开始你的 Doris DEBUG 之旅了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文