ClickHouse是一款列式分布式数据库,目前在CentOS上都是以rpm来安装的,因为我们可能需要自定义一些功能,并做一些自定义的部署规范需求,比较适合自己进行打包部署。
环境要求
- CentOS 7
- gcc-7+、g++-7+
- cmake3、ccache
- ClickHouse 18+
首先安装gcc
这里采用的是从源码包安装的方式,从http://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0下载对应的tar.gz包(gcc-7.3.0.tar.gz)。
把下载的包gcc-7.3.0.tar.gz放到服务器上,我是放置在~/gcc目录下。准备好了源码包,接下来是安装下面的三个依赖,如果没有安装,在执行configure的时候会提示安装,按照提示安装即可。
- sudo yum install gmp-devel
- sudo yum install mpfr-devel
- sudo yum install libmpc-devel
然后开始编译
cd ~/gcc
tar zxf gcc-7.3.0.tar.gz
cd gcc-7.3.0
./configure --prefix=~/gcc7 --disable-multilib # 配置将安装到目录~/gcc7,第二个参数是关闭32位指令,仅使用64位
make -j4
make install
经过一段漫长的编译和安装,gcc已经安装在目录~/gcc7了,执行如下的命令查看版本:
~/gcc7/bin/gcc -v
一般为了方便使用,可以建立软连接到/usr/bin,这样可以直接在终端里面使用gcc-7和g++-7了。
sudo ln -s ~/gcc7/bin/gcc /usr/bin/gcc-7
sudo ln -s ~/gcc7/bin/g++ /usr/bin/g++-7
安装cmake3和ccache
编译ClickHouse需要cmake3,直接sudo yum install cmake3和sudo yum install ccache即可
编译ClickHouse
首先clone代码到用户目录(~)下,并更新子模块,拉取子模块的代码,主要是一些依赖的库。
git clone https://github.com/yandex/ClickHouse.git
cd ClickHouse
git submodule update --init --recursive
配置编译器为gcc7:
export CC=gcc-7 CXX=g++-7
好了可以开始编译了:
cd ~/ClickHouse
mkdir build
cmake3 ..
make
经过一段漫长的时间编译,最后编译好的包就在build/dbms/programs下面,有一个clickhouse的可执行文件,所有的功能都使用这个包,一般是通过使用不同的名字建立软连接到这个文件(比如clickhouse-client和clickhouse-server,代码内部根据名字来确定使用的功能)来使用不同的功能。