本文主要介绍如何搭建 ClickHouse 的开发环境。虽然 ClickHouse 官方文档对不同系统提供了相应的配置方法,但是在安装依赖时又常会出现各种各样的问题,所以本文给出一种非常快速的环境配置方法来方便读者更好的了解 ClickHouse。虽然 ClickHouse 支持 MacOS 编译,但是 MacOS 不能很好对支持 ClickHouse 所有组件的编译,所以建议还是使用 Linux 进行编译调试。本文是在 CentOS 7 中进行环境配置的。但此方法也适用于 CentOS 和 Ubuntu 各版本。
clang 环境配置
这个主要是得益于 AmosBird 大佬提供的 LDB_TOOLCHAIN 来进行配置,打开链接下载最新版 Vulture 版本的 ldb_toolchain_gen.sh。
执行一下命令:
bash ldb_toolchain_gen.sh /data/ldb_toolchain
其中 /data/ldb_toolchain/ 可以执行任意路径。执行成功后会有以下提示:
Congratulations! LDB toolchain is setup at /data/ldb_toolchain/. export PATH="/data/ldb_toolchain/bin":$PATH to take full advantage.
NOTE: LDB toolchain cannot be relocated to other directories manually. Instead, generate it again using ldb_toolchain_gen.sh
将上述的环境变量信息写入 bashrc 中,例如:
echo 'export PATH="/data/ldb_toolchain//bin":$PATH' >> ~/.bashrc
执行 source,并查看版本信息,例如:
source ~/.bashrc
版本信息如下:
[root@centos tool]# clang -v
Ubuntu clang version 15.0.7
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /data/ldb_toolchain/bin
Found candidate GCC installation: /data/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /data/ldb_toolchain/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
[root@centos tool]# cmake -version
cmake version 3.22.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
[root@centos tool]# ninja --version
1.8.2
到此,编译环境就搭建完毕了,是不是非常傻瓜式。
ClickHouse 编译
先将 ClickHouse 代码 clone 到本地:
git clone https://github.com/ClickHouse/ClickHouse.git
再 cd 到 ClickHouse 目录下,先要将 ClickHouse 的 submodule 先下载下来:
cd ClickHouse
# 下载 submodule 的时间会比较长,请耐心等待
git submodule update --init --recursive
再在 ClickHouse 目录中创建 build 目录,执行 cmake 和 ninja 进行编译:
mkdir build
cd build
# 使用 debug 编译便于后面进行调试
cmake -D CMAKE_BUILD_TYPE=Debug ..
# 编译过程也比较长,请耐心等待
ninja
到此,代码就编译完成了。
ClickHouse 断点调试
很多时候开发者都想通过断点的方式跟踪下代码的执行情况,大多数文章是推荐 GDB 进行 Debug,大佬们对 GDB 很熟悉的话会觉得非常好用,但是初学者会觉得非常难用,确实很多场景下开发者仅仅是想看看变量值,所以本文推荐的是使用 VS Code 进行调试,尽可能做到最简单最方便的让开发者快速的跑起来代码。
VS Code 插件
Remote - SSH
由于本文推荐的是 CentOS7,所以会涉及到远程调试,需要安装 Remote - SSH 插件来进行远程连接,这个网上有很多方法来进行安装和连接开发机,这里不再赘述。
clangd
同样是在 VS Code 的 Extensions 中直接搜索安装即可,安装完 clangd 后需要重启一下 VS Code,此时 clangd 就会识别 ClickHouse 编译出的 ./build/compile_commands.json 进行加载,此时,通过 Ctrl + 左键 即可自由在方法间进行跳转,使用 Control + - 就可以完成回跳,非常方便。
GitLens
这是一个非常好用的 git 插件,安装方式也是在 Extensions 中直接搜索安装即可,安装后,当鼠标点击到代码上会在后面提示出这行代码的提交人以及 commitid 等信息,而且还提供查询 git 提交历史等功能。
CodeLLDB
这是个用于执行 lldb 调试的插件,可以通过 VS Code 进行可视化断点调试。
到此,VS Code 的插件已经配置完成,其余插件不必须,有自己习惯使用可以安装。
VS Code 调试
在 ClickHouse 目录下创建 .vscode/launch.json,内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "debug",
"type": "lldb",
"request": "launch",
"program": "${workspaceFolder}/build/programs/clickhouse-server",
"args": ["--config-file=${workspaceFolder}/build/programs/config.xml"],
"setupCommands": [
{
"description": "pretty",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
其中,program 为 clickhouse-server 二进制路径,args 为 ClickHouse 配置文件路径,${workspaceFolder} 表示当前路径(即 ClickHouse 目录)。
既然配置了 config.xml 的路径,那要在该位置( ./build/programs 下)创建 config.xml 和 users.xml。配置信息详见:ClickHouse 集群搭建。
到此,就可以点击 VS Code 的调试按钮启动 clickhouse-server 了。随意在代码中添加断点即可完成断点调试。
欢迎添加微信:xiedeyantu,讨论技术问题。

1万+

被折叠的 条评论
为什么被折叠?



