返回介绍

下载

编译与部署

开始使用

操作手册

最佳实践

扩展功能

设计文档

SQL 手册

开发者手册

Apache 社区

编译

发布于 2021-09-30 01:42:40 字数 14566 浏览 1315 评论 0 收藏 0

本文档主要介绍如何通过源码编译 Doris。

使用 Docker 开发镜像编译(推荐)

使用现成的镜像

  1. 下载 Docker 镜像

    $ docker pull apache/incubator-doris:build-env-1.3.1

    检查镜像下载完成:

     $ docker images
     REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
     apache/incubator-doris   build-env-1.3.1           49f68cecbc1a        4 days ago          3.76GB
    

注: 针对不同的 Doris 版本,需要下载对应的镜像版本

镜像版本commit iddoris 版本
apache/incubator-doris:build-envbefore ff0dd0d0.8.x, 0.9.x
apache/incubator-doris:build-env-1.1ff0dd0d0.10.x, 0.11.x
apache/incubator-doris:build-env-1.24ef5a8c0.12.x - 0.14.0
apache/incubator-doris:build-env-1.3.1ad67dd3后续的发布版本

注意

  1. doris 0.14.0 版本仍然使用apache/incubator-doris:build-env-1.2 编译,之后的代码将使用apache/incubator-doris:build-env-1.3.1。

  2. 在 build-env-1.3.1 的docker镜像中,同时包含了 OpenJDK 8 和 OpenJDK 11,并且默认使用 OpenJDK 11 编译。请确保编译使用的 JDK 版本和运行时使用的 JDK 版本一致,否则会导致非预期的运行错误。你可以使用在进入编译镜像的容器后,使用以下命令切换默认 JDK 版本:

    切换到 JDK 8:

    $ alternatives --set java java-1.8.0-openjdk.x86_64
    $ alternatives --set javac java-1.8.0-openjdk.x86_64
    $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0
    

    切换到 JDK 11:

    $ alternatives --set java java-11-openjdk.x86_64
    $ alternatives --set javac java-11-openjdk.x86_64
    $ export JAVA_HOME=/usr/lib/jvm/java-11
    
  1. 运行镜像

    $ docker run -it apache/incubator-doris:build-env-1.3.1

    建议以挂载本地 Doris 源码目录的方式运行镜像,这样编译的产出二进制文件会存储在宿主机中,不会因为镜像退出而消失。

    同时,建议同时将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。

     $ docker run -it -v /your/local/.m2:/root/.m2 -v /your/local/incubator-doris-DORIS-x.x.x-release/:/root/incubator-doris-DORIS-x.x.x-release/ apache/incubator-doris:build-env-1.3.1
    
  2. 下载源码

    启动镜像后,你应该已经处于容器内。可以通过以下命令下载 Doris 源码(已挂载本地源码目录则不用):

     $ wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz
     or
     $ git clone https://github.com/apache/incubator-doris.git
    
  3. 编译 Doris

     $ sh build.sh
    

    编译完成后,产出文件在 output/ 目录中。

    自行编译开发环境镜像

你也可以自己创建一个 Doris 开发环境镜像,具体可参阅 docker/README.md 文件。

直接编译(CentOS/Ubuntu)

你可以在自己的 linux 环境中直接尝试编译 Doris。

  1. 系统依赖 不同的版本依赖也不相同

    • ad67dd3 之前版本依赖如下:

      GCC 7.3+, Oracle JDK 1.8+, Python 2.7+, Apache Maven 3.5+, CMake 3.11+ Bison 3.0+

      如果使用Ubuntu 16.04 及以上系统 可以执行以下命令来安装依赖

      sudo apt-get 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 autopoint pkg-config

      如果是CentOS 可以执行以下命令

      sudo yum groupinstall 'Development Tools' && sudo yum install maven cmake byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc++-static java-1.8.0-openjdk

    • ad67dd3 之后版本依赖如下:

      GCC 10+, Oracle JDK 1.8+, Python 2.7+, Apache Maven 3.5+, CMake 3.19.2+ Bison 3.0+

      如果使用Ubuntu 16.04 及以上系统 可以执行以下命令来安装依赖

       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
       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
      

      如果是CentOS 可以执行以下命令

       sudo yum groupinstall 'Development Tools' && sudo yum install maven cmake byacc flex automake libtool bison binutils-devel zip unzip ncurses-devel curl git wget python2 glibc-static libstdc++-static java-1.8.0-openjdk
       sudo yum install centos-release-scl
       sudo yum install devtoolset-10
       scl enable devtoolset-10 bash
      

      如果当前仓库没有提供devtoolset-10 可以添加如下repo 使用oracle 提供 package

       [ol7_software_collections]
       name=Software Collection packages for Oracle Linux 7 ($basearch)
       baseurl=http://yum.oracle.com/repo/OracleLinux/OL7/SoftwareCollections/$basearch/
       gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
       gpgcheck=1
       enabled=1
      

      安装完成后,自行设置环境变量 PATH, JAVA_HOME 等。 注意: Doris 0.14.0 的版本仍然使用gcc7 的依赖编译,之后的代码将使用gcc10 的依赖

  2. 编译 Doris

     $ sh build.sh
    

    编译完成后,产出文件在 output/ 目录中。

常见问题

  1. Could not transfer artifact net.sourceforge.czt.dev:cup-maven-plugin:pom:1.6-cdh from/to xxx

    如遇到上述错误,请参照 PR #4769 修改 fe/pom.xml 中 cloudera 相关的仓库配置。

  2. 第三方依赖下载连接错误、失效等问题

    Doris 所依赖的第三方库的下载连接都在 thirdparty/vars.sh 文件内。随着时间推移,一些下载连接可能会失效。如果遇到这种情况。可以使用如下两种方式解决:

    1. 手动修改 thirdparty/vars.sh 文件

      手动修改有问题的下载连接和对应的 MD5 值。

    2. 使用第三方下载仓库:

       export REPOSITORY_URL=https://doris-thirdparty-repo.bj.bcebos.com/thirdparty
       sh build-thirdparty.sh
      

      REPOSITORY_URL 中包含所有第三方库源码包和他们的历史版本。

特别声明

自 0.13 版本开始,默认的编译产出中将取消对 [1] 和 [2] 两个第三方库的依赖。这两个第三方库为 GNU General Public License V3 协议。该协议与 Apache License 2.0 协议不兼容,因此默认不出现在 Apache 发布版本中。

移除依赖库 [1] 会导致无法访问 MySQL 外部表。访问 MySQL 外部表的功能会在后续版本中通过 UnixODBC 实现。

移除依赖库 [2] 会导致在无法读取部分早期版本(0.8版本之前)写入的部分数据。因为早期版本中的数据是使用 LZO 算法压缩的,在之后的版本中,已经更改为 LZ4 压缩算法。后续我们会提供工具用于检测和转换这部分数据。

如果有需求,用户可以继续使用这两个依赖库。如需使用,需要在编译时添加如下选项:

WITH_MYSQL=1 WITH_LZO=1 sh build.sh

注意,当用户依赖这两个第三方库时,则默认不在 Apache License 2.0 协议框架下使用 Doris。请注意 GPL 相关协议约束。

  • [1] mysql-5.7.18
  • [2] lzo-2.10

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

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

发布评论

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