博客

构建并运行 Databend

PsiACEJan 6, 2023

今天 Databend 合并了一个重大重构,expression 正式合并到

main
分支,为 Databend 装载了全新的静态类型系统和表达式计算框架。接下来一到两周内会进行全面测试,这个期间 nightly release 停发。如果大家对这套 New Expression 系统感兴趣,不妨参考这篇文章,亲自动手体验一下。

如何构建 Databend

Make

采用

make
构建的方式会调用预先设定好的脚本,脚本位于
scripts/build
路径下。

只开启默认特性,并且一次性构建

databend-query
databend-meta
databend-metactl
以及
open-sharing
四个程序。

参考之前文章《如何设置 Databend 开发环境》,设置好开发环境。

  • make build
    可轻松构建 debug 版本。
  • make build-release
    则会构建 release 版本,并会采用 objcopy 减少二进制体积。
  • make build-native
    构建针对本机 CPU 优化的版本。

Cargo

使用

cargo
构建的好处在于可以按需开启特性,并灵活控制要构建的目标二进制文件。

常用的命令格式如:

RUSTFLAGS="--cfg tokio_unstable" cargo build --bin=databend-query --features=tokio-console

即可构建启用

tokio-console
支持的
databend-query
,使用
RUSTFLAGS="--cfg tokio_unstable"
是因为
tokio
tracing
特性还没有稳定下来。

Databend features 速览

这里只介绍几个比较常用的特性,具体支持的特性可以查看

Cargo.toml
中的
features
字段。

  • simd = ["common-arrow/simd"]
    :默认开启的特性,启用 arrow2 的 SIMD 支持(meta & query)。
  • tokio-console = ["common-tracing/console", "common-base/tracing"]
    :用于监控和调试异步调用程序(meta & query)。
  • memory-profiling = ["common-base/memory-profiling", "tempfile"]
    :用于内存分析(meta & query)。
  • hive = ["common-hive-meta-store", "thrift", "storage-hdfs"]
    :用于提供 hive 支持(query)。

跨平台构建

Databend 提供 Docker

build-tool
Image,可以简化跨平台构建所需工作。

示例选用

x86_64-unknown-linux-gnu
目标平台,其他支持平台也类似:

IMAGE='datafuselabs/build-tool:x86_64-unknown-linux-gnu' RUSTFLAGS='-C link-arg=-Wl,--compress-debug-sections=zlib-gnu' ./scripts/setup/run_build_tool.sh cargo build --target x86_64-unknown-linux-gnu

如何运行 Databend

一旦构建完成后,就可以在 target 目录下找到对应的二进制程序。对于 Databend 的运行,同样有多种可供选择的方式。

Make

Databend 同样预置了一些方便开发人员快速运行的

make
命令:

  • make run-debug
    :构建并运行 debug 版本。
  • make run-release
    :构建并运行 release 版本。
  • make run-debug-management
    :构建 debug 版本并以 management 模式运行。

如果你检查过位于

scripts/ci/deploy
的脚本,就会发现,这里本质上是直接执行了对应程序的二进制文件,并为其导入了位于
scripts/ci/deploy/config
目录下的相应配置。

Cargo

使用

cargo
也可以运行 Databend,通常我们会推荐采用指定配置文件的方式来启动。

cargo run --bin databend-query -c scripts/ci/deploy/config/databend-query-embedded-meta.toml

执行上述命令可以以 embedded meta 的模式启用

databend-query
的单节点模式。如果不指定在 embedded meta 模式下运行,就必须提供
your-meta-service-endpoints

另外,如果有需要的话也可以参考

scripts/ci/deploy/config
中的文件编写自己的配置。

集群模式

Databend 总是推荐用户在生产环境中使用集群模式,为了方便模拟这一情况,也可以执行:

BUILD_PROFILE=release ./scripts/ci/deploy/databend-query-cluster-3-nodes.sh

来启动一个具有 3 个

databend-meta
节点和 3 个
databend-query
节点的集群,通过指定
BUILD_PROFILE
可以在 release 和 debug 版本间切换。

分享本篇文章

订阅我们的新闻简报

及时了解功能发布、产品规划、支持服务和云服务的最新信息!