鲲鹏社区首页
中文
注册
开发者
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

编译代码

编译所有源码后获取二进制文件doris_be,使用编译得到的doris_be替换集群BE中的所有doris_be以获取性能加速。

  1. 进入“/opt/tools/installed/”目录,下载并解压Doris-2.1.2-rc04源码。
    1
    2
    3
    4
    cd /opt/tools/installed
    wget https://github.com/apache/doris/archive/refs/tags/2.1.2-rc04.zip
    mv 2.1.2-rc04.zip ./doris-2.1.2-rc04.zip
    unzip doris-2.1.2-rc04.zip
    
  2. 下载并解压预编译第三方库doris-thirdparty-prebuild-arm64.tar.xz,并移动到Doris文件“/thirdparty”目录下。
    1
    2
    3
    4
    5
    cd /opt/tools/installed
    wget https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-prebuild-arm64.tar.xz
    tar -xvf doris-thirdparty-prebuild-arm64.tar.xz
    cp installed/lib64/libjemalloc_doris_pic.a installed/lib64/libjemalloc_arrow.a
    mv installed /opt/tools/installed/doris-2.1.2-rc04/thirdparty/
    
  3. 下载并解压第三方源码doris-thirdparty-source.tgz,将源码包移动到Doris文件“/thirdparty”目录下并解压bitshuffle-0.5.1.tar.gz。
    1
    2
    3
    4
    5
    6
    cd /opt/tools/installed
    wget https://github.com/apache/doris-thirdparty/releases/download/automation/doris-thirdparty-source.tgz
    tar -xzf doris-thirdparty-source.tgz
    mv src /opt/tools/installed/doris-2.1.2-rc04/thirdparty/
    cd /opt/tools/installed/doris-2.1.2-rc04/thirdparty/src
    tar -xvf bitshuffle-0.5.1.tar.gz
    
  4. 下载Bitshuffle源码和Patch,解压Patch到源码路径,并得到修改后bitshuffle_core.c,用修改后的bitshuffle_core.c替换“thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c”
    1. 进入“/opt/tools/installed”目录,下载并解压Bitshuffle源码。
      1
      2
      3
      cd /opt/tools/installed
      wget https://github.com/kiyo-masui/bitshuffle/archive/0.5.1.tar.gz
      tar -xvf 0.5.1.tar.gz
      
    2. 下载Bitshuffle Patch并移动到Bitshuffle源码的项目路径下。
      1
      2
      3
      cd /opt/tools/installed/
      wget https://gitee.com/kunpengcompute/boostkit-bigdata/releases/download/24.0.RC5-doris_neon_optimization/bitshuffle.patch
      mv bitshuffle.patch /opt/tools/installed/bitshuffle-0.5.1/
      
    3. 应用优化后的bitshuffl.patch。
      1
      2
      cd /opt/tools/installed/bitshuffle-0.5.1/
      patch -p1 < bitshuffle.patch
      
    4. 用修改后的bitshuffle_core.c替换“thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c”
      1
      cp /opt/tools/installed/bitshuffle-0.5.1/src/bitshuffle_core.c /opt/tools/installed/doris-2.1.2-rc04/thirdparty/src/bitshuffle-0.5.1/src/bitshuffle_core.c
      
  5. 修改“thirdparty/build-thirdparty.sh”,使其仅编译Bitshuffle。
    1. 打开文件。
      1
      vi /opt/tools/installed/doris-2.1.2-rc04/thirdparty/build-thirdparty.sh
      
    2. “i”进入编辑模式,注释第1796行到1869行,新增1871行package的赋值并将packages赋值为bitshuffle。
      1
      packages=(bitshuffle)
      

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
  6. 使用GCC 12编译第三方的Bitshuffle。
    1
    2
    3
    export DORIS_TOOLCHAIN=gcc
    cd /opt/tools/installed/doris-2.1.2-rc04/thirdparty
    sh build-thirdparty.sh
    
  7. 使用Clang 17编译BE。
    1. 使用以下命令添加环境变量
      1
      export DORIS_TOOLCHAIN=clang
      
    2. 打开“build.sh”文件。
      1
      2
      cd /opt/tools/installed/doris-2.1.2-rc04
      vi build.sh
      
    3. “i”进入编辑模式,在文件505行和506行指定子模块版本,使其与Doris主代码兼容。
      update_submodule "be/src/apache-orc" "apache-orc" "https://github.com/apache/doris-thirdparty/archive/d7975612de8b9711a284af9d7cba5248c49f73b3.tar.gz"
      update_submodule "be/src/clucene" "clucene" "https://github.com/apache/doris-thirdparty/archive/ef95e67ae3123409f006072194f742a079603159.tar.gz"

    4. 在文件550行增加编译选项--gcc-install-dir=/opt/tools/installed/gcc-12.3.1-2024.05-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1。
      1
      -DEXTRA_CXX_FLAGS="${EXTRA_CXX_FLAGS} --gcc-install-dir=/opt/tools/installed/gcc-12.3.1-2024.05-aarch64-linux/lib64/gcc/aarch64-linux-gnu/12.3.1"
      

    5. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    6. 编译BE。
      1
      STRIP_DEBUG_INFO=ON sh build.sh --clean --be
      
  8. 得到Clang 17编译后的doris_be。

    BE编译完成后获取二进制文件doris_be。

    1
    cd /opt/tools/installed/doris-2.1.2-rc04/be/output/lib