• 如何设置 Databend 开发环境


    工欲善其事,必先利其器。在开启 Databend 贡献之旅前,一起来配置适合自己的开发环境吧。快速安装

    快速安装

    为方便开发者快速建立开发环境,Databend 维护了一个复杂的 shell 脚本,位于 scripts/setup/dev_setup.sh。只需执行一条指令即可完成开发环境配置:

    make setup -d
    

    注意:此过程会辅助安装部分 python 环境,可能会对本地原开发环境造成影响,建议预先执行以下命令以创建并启用专属虚拟环境。

    1. python -m venv .databend
    2. source .databend/bin/activate

    如果遇到依赖缺失问题,可以参考「分步安装 - 测试必备」这一部分的内容安装。分步安装

    分步安装

    这里以 Fedora 36 为例,考虑到不同系统和发行版之间的差异,你可能需要自行安装 gcc,python 和 openssl。

    1.安装 Rust toolchain:
    推荐使用 rustup 来管理 Rust toolchain ,参考 https://rustup.rs/ 进行安装。对于 MacOS 和 Linux 用户,执行:

    $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    

    Databend 通常使用最新发布的 nightly 工具链进行开发,相关信息记录在 rust-toolchain.toml 中。Rustup 会在使用时对工具链进行自动重载,安装时只需默认配置。

    1. $ cargo build
    2. info: syncing channel updates for 'nightly-2022-05-19-x86_64-unknown-linux-gnu'
    3. info: latest update on 2022-05-19, rust version 1.63.0-nightly (cd282d7f7 2022-05-18)

    2.安装必备依赖:
    以下列出了一些安装构建和测试必备依赖的关键步骤,说明及报错信息以注释形式呈现。
    构建必备

    1. # common-hive-meta-store 需要,thrift not found
    2. sudo dnf install thrift
    3. # openssl-sys 需要,Can't locate FindBin.pm, File/Compare.pm in @INC
    4. sudo dnf install perl-FindBin perl-File-Compare
    5. # prost-build 需要,is `cmake` not installed?
    6. # The CMAKE_CXX_COMPILER: c++ is not a full path and was not found in the PATH.,安装 clang 时也会安装 gcc-c++ 和 llvm
    7. sudo dnf install cmake clang

    测试必备

    1. # 功能测试和后续体验需要
    2. sudo dnf install mysql
    3. # 包含目前功能测试和 lint 需要的所有 Python 依赖
    4. cd tests
    5. pip install poetry
    6. poetry install
    7. poetry shell
    8. # sqllogic 测试需要(包含在上面步骤中,按需选用)
    9. (tests) cd logictest
    10. pip install -r requirements.txt
    11. # fuzz 测试需要
    12. (tests) cd fuzz
    13. pip install -r requirements.txt

    Lint 必备

    1. # taplo fmt 需要
    2. cargo install taplo-cli

    编辑器 - Visual Studio Code

    1.插件推荐

    rust-analyzer

    • 作者:The Rust Programming Language
    • 为 Visual Studio Code 提供 Rust 语言支持。

    crates

    • 作者:Seray Uzgur
    • 帮助 Rust 开发者管理 Cargo.toml 中的依赖。仅支持来源为 crates.io 的依赖。

    CodeLLDB

    • 作者:Vadim Chugunov
    • 由 LLDB 驱动的原生调试工具。支持调试 C++ 、Rust 和其他编译语言。

    Remote - Containers

    • 作者:Microsoft
    • 在 Docker 容器内打开任何文件夹或 Repo ,并利用 Visual Studio Code 的全部功能。

    2. 利用 Dev Containers 开发(For Linux)

    安装「Remote - Containers」插件,打开 Databend 后会看到右下角弹出窗口并提示「Reopen in Container」。

    安装 Docker

    根据 Docker Docs - Install 安装并启动对应你发行版的 docker 。以 Fedora 36 为例,步骤如下:

    1. # 移除旧版本 docker
    2. sudo dnf remove docker \
    3.                   docker-client \
    4.                   docker-client-latest \
    5.                   docker-common \
    6.                   docker-latest \
    7.                   docker-latest-logrotate \
    8.                   docker-logrotate \
    9.                   docker-selinux \
    10.                   docker-engine-selinux \
    11.                   docker-engine
    12. # 设置存储库
    13. sudo dnf -y install dnf-plugins-core
    14. sudo dnf config-manager \
    15.     --add-repo \
    16.     https://download.docker.com/linux/fedora/docker-ce.repo
    17. # 安装 Docker Engine
    18. sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin

    将当前 User 添加到 docker group 中参考 Docker Docs - PostInstall中 Manage Docker as a non-root user 一节配置,可能需要重启。
    步骤如下

    1. # 添加 docker 用户组
    2. $ sudo groupadd docker
    3. # 将用户添加到 docker 这个组中
    4. $ sudo usermod -aG docker $USER
    5. # 激活更改
    6. $ newgrp docker
    7. # 更改权限以修复 permission denied
    8. $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    9. $ sudo chmod g+rwx "$HOME/.docker" -R

    其他步骤

    启用 Docker :

    sudo systemctl start docker
    

    点击左下角「打开远程窗口」选中「Reopen in Container」即可体验。

    其他实用工具推荐

    这里列出一些可能有助于 Databend 开发的实用工具,根据实际情况按需选用。

    1.starship

    轻量级、反应迅速、可无限定制的高颜值终端!

     参考 starship - installation 进行安装。

     

    curl -sS https://starship.rs/install.sh | sh
    

    2.hyperfine

    命令行基准测试工具。

    参考 hyperfine - installation进行安装。

    cargo install hyperfine
    

    关于 Databend

    Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

    文章首发于公众号:Databend

     

  • 相关阅读:
    【Vue】自定义事件实现组件之间的通信(案例讲解)
    码云gitee+宝塔webhook实现同步代码
    如何使用IDEA导入Maven项目
    http和dubbo接口调用主动设置超时时间
    【深度学习实验】数据可视化
    kafka 将log4j的项目升级到log4j2
    【已解决】‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope
    Containerd shim 原理深入解读
    Java:一篇学好设计模式
    【OpenGL ES】渲染管线
  • 原文地址:https://blog.csdn.net/Databend/article/details/126040345