编译和安装

本章节分别介绍ClickHouse 20.12.3.3-stableClickHouse 20.3.19.4-lts两个版本ClickHouse的编译和安装,请视具体情况选择一种。

ClickHouse 20.12.3.3-stable

  1. 使用git clone命令下载ClickHouse源码包。

    1
    2
    cd /home
    git clone git://github.com/ClickHouse/ClickHouse.git
    

    如果执行git clone命令失败,github.com替换为github.com.cnpmjs.org。

  2. 进入目录,切换至v20.12.3.3-stable分支。

    1
    2
    cd ClickHouse
    git checkout v20.12.3.3-stable
    

  3. 下载相关依赖项。

    由于需要下载的依赖包较多,花费的时间比较长,请耐心等待。
    1
    git submodule update --init --recursive
    
    如果下载速度慢,可以替换下载镜像网址以提高速度,操作如下:
    1. 更改下载地址。
      1
      sed -i 's/https/git/g' .gitmodules
      
    2. 将新的URL更新到.git/config。
      1
      git submodule sync
      
    3. 循环下载依赖。
      1
      git submodule update --init --recursive
      

    若下载报错或者本章节后面步骤操作过程中报错缺少文件,参考FAQ中的问题1来解决,不需要重新执行git submodule update --init --recursive。

  4. msgpack-c组件切换至4668426分支。

    1
    2
    3
    cd /home/ClickHouse/contrib/msgpack-c
    git checkout 4668426
    git branch
    

  5. grpc组件切换至a6570b8分支,然后将grpc中的第三方组件abseil-cpp和c-ares下载到指定目录。

    1
    2
    3
    cd /home/ClickHouse/contrib/grpc
    git checkout a6570b8
    git branch
    

    1
    2
    3
    4
    5
    6
    cd third_party/abseil-cpp
    git clone git://github.com/abseil/abseil-cpp.git
    git checkout a6570b8
    git branch
    mv abseil-cpp/* ./ && rm -rf abseil-cpp
    ls
    

    1
    2
    3
    4
    5
    6
    cd ../cares/cares
    git clone git://github.com/c-ares/c-ares.git
    git checkout a6570b8
    git branch
    mv c-ares/* ./ && rm -rf c-ares
    ls
    

  6. arrow组件切换至3cbcb7b分支。

    cd /home/ClickHouse/contrib/arrow
    git checkout 3cbcb7b
    git branch

  7. 设置Arm环境编译禁用FastMemcpy模块。

    编辑/home/ClickHouse/base/glibc-compatibility/CMakeLists.txt文件。

    vi /home/ClickHouse/base/glibc-compatibility/CMakeLists.txt

    将第30至32行修改为如下内容。

    1
    2
    3
    4
    5
    if (NOT ARCH_ARM)
    add_library (clickhouse_memcpy OBJECT
    ${ClickHouse_SOURCE_DIR}/contrib/FastMemcpy/memcpy_wrapper.c
    )
    endif()
    

  8. boost组件切换至a04e72c046分支。

    1
    2
    3
    cd /home/ClickHouse/contrib/boost
    git checkout a04e72c046
    git branch
    

  9. brotli组件切换至5805f99分支。

    1
    2
    3
    cd /home/ClickHouse/contrib/brotli
    git checkout 5805f99
    git branch
    

  10. 修改contrib/libunwind/src/DwarfInstructions.hpp文件。

    1. 打开/home/ClickHouse/contrib/libunwind/src/DwarfInstructions.hpp文件。
      1
      vi /home/ClickHouse/contrib/libunwind/src/DwarfInstructions.hpp
      
    2. 按“i”进入编辑模式,将第164~166行修改为如下内容。
      1
      2
      auto page_size = sysconf(_SC_PAGESIZE);
      return ptr && (0 == syscall(SYS_mincore, (void*)(ptr / page_size * page_size), 1, &mincore_res) || errno == ENOSYS);
      

    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  11. 配置编译环境变量。

    1
    2
    export CC=clang
    export CXX=clang++
    

  12. 创建build目录,执行cmake命令。

    1
    2
    3
    4
    cd /home/ClickHouse
    rm -rf build
    mkdir -p build && cd build
    cmake .. -DENABLE_JEMALLOC=OFF -DCMAKE_INSTALL_PREFIX=/opt/clickhouse
    

  13. 执行编译和安装。

    1
    make -j `nproc`
    

    1
    make install
    

  14. 查看安装后的路径。

    1
    ll /opt/clickhouse
    

  15. 查看版本。

    1
    /opt/clickhouse/bin/clickhouse-server --version
    

ClickHouse 20.3.19.4-lts

  1. 使用git clone命令下载ClickHouse源码包。

    1
    2
    cd /home
    git clone git://github.com/ClickHouse/ClickHouse.git
    

  2. 进入目录,切换至v20.3.19.4-lts分支。

    1
    2
    cd ClickHouse
    git checkout v20.3.19.4-lts
    

  3. 下载相关依赖项(由于需要下载依赖包较多,时间比较久)。

    1
    git submodule update --init --recursive
    
    • 如果下载速度慢,可以替换下载镜像网址提高速度,操作如下:
    1
    2
    3
    4
    5
    6
    # 更改下载地址 
    sed -i 's/https/git/g' .gitmodules
    # 将新的URL更新到.git/config
    git submodule sync
    # 循环下载依赖
    git submodule update --init --recursive
    
    • 若下载报错,参考FAQ中的问题1来解决,不需要重新执行git submodule update --init --recursive。

  4. 切换simdjson至avx512port分支。

    1
    2
    cd /home/ClickHouse/contrib/simdjson
    git checkout avx512port
    

  5. 将grpc中的三方组件c-ares需要手动下载到指定目录。

    1
    2
    3
    4
    cd /home/ClickHouse/contrib/grpc/third_party/cares/cares
    git clone git://github.com/c-ares/c-ares.git
    mv c-ares/* ./ && rm -rf c-ares/
    ls
    

  6. 切换arrow至maint-0.15.x分支。

    1
    2
    cd /home/ClickHouse/contrib/arrow
    git checkout maint-0.15.x
    

  7. 切换brotli至v1.0分支。

    1
    2
    cd /home/ClickHouse/contrib/brotli
    git checkout v1.0
    

  8. 配置编译环境变量。

    1
    2
    export CC=clang
    export CXX=clang++
    

  9. 创建build目录,执行cmake。

    1
    2
    3
    4
    cd /home/ClickHouse
    rm -rf build
    mkdir -p build && cd build
    cmake .. -DENABLE_JEMALLOC=OFF -DCMAKE_INSTALL_PREFIX=/opt/clickhouse
    

  10. 执行编译和安装。

    1
    make -j `nproc`
    

    1
    make install
    

  11. 查看安装后的路径。

    1
    ll /opt/clickhouse
    

  12. 查看版本。

    1
    /opt/clickhouse/bin/clickhouse-server --version