手把手教你在华为云编译和使用ClickHouse
【摘要】 1 前言大家好,今天继续向各位分享在华为云上编译和使用ClickHouse,这里会以单节点为例,后续会有系列博文介绍怎样部署集群和使用,欢迎持续关注^_^2 准备工作在开始本文之前,建议在华为云购买一台云服务器,同时考虑到后续的顺利操作,云服务器需要有一些要求:CPU架构:x86计算规格:c6.2xlarge.4,如果想编译快一点尽量提高CPU的核数镜像:公共镜像,CentOS CentOS...
1 前言
大家好,今天继续向各位分享在华为云上编译和使用ClickHouse,这里会以单节点为例,后续会有系列博文介绍怎样部署集群和使用,欢迎持续关注^_^
2 准备工作
在开始本文之前,建议在华为云购买一台云服务器,同时考虑到后续的顺利操作,云服务器需要有一些要求:
CPU架构:x86计算
规格:c6.2xlarge.4,如果想编译快一点尽量提高CPU的核数
镜像:公共镜像,CentOS CentOS 8.0 64bit
系统盘:高IO,100GB
弹性公网:按流量计费(提高下载速度)
3 操作系统
安装软件包
[root@ecs-dc69 ~]# yum install -y gcc-c++ cmake git
4 编译
4.1 下载ClickHouse代码
[root@ecs-dc69 ~]# git clone https://github.com/ClickHouse/ClickHouse.git
[root@ecs-dc69 ~]# cd ClickHouse/
[root@ecs-dc69 ClickHouse]# git checkout -b 20.9 remotes/origin/20.9
4.2 编译gcc-9.3.0
编译ClickHouse需要GCC9及以上的版本,而本机已安装的版本只有GCC8,不能满足:
[root@ecs-dc69 ~]# gcc --version
gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5)
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
所以需要自行编译安装,这里介绍两种方式:
从ClickHouse代码库触发编译安装
[root@ecs-dc69 ClickHouse]# cd utils/ci
[root@ecs-dc69 ci]# vim default-config
...
27 GCC_SOURCES_VERSION=gcc-9.3.0 # or gcc-7.1.0
...
修改gcc版本信息“latest”为“gcc-9.3.0”,然后编译安装:
[root@ecs-dc69 ci]# ./build-gcc-from-sources.sh
注意:因为编译gcc时间会比较长,如果中间出现网络掉线,建议不要重新执行这个脚本,可以增量继续:
[root@ecs-dc69 ~]# cd ClickHouse/utils/ci/workspace/gcc/gcc-build/
[root@ecs-dc69 gcc-build]# make -j8 && make install
自行下载安装包编译安装
[root@ecs-dc69 ~]# wget https://mirrors.nju.edu.cn/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz
[root@ecs-dc69 ~]# tar xvf gcc-9.3.0.tar.gz
[root@ecs-dc69 ~]# cd gcc-9.3.0
[root@ecs-dc69 gcc-9.3.0]# ./contrib/download_prerequisites
[root@ecs-dc69 gcc-9.3.0]# mkdir build
[root@ecs-dc69 gcc-9.3.0]# cd build
[root@ecs-dc69 build]# ../configure --enable-languages=c,c++ --disable-multilib
[root@ecs-dc69 build]# make -j8 && make install
另外,如果网络问题无法自动下载gcc的依赖包,可以参考以下几个链接或从其他渠道下载:
[root@ecs-dc69 gcc-9.3.0]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
[root@ecs-dc69 gcc-9.3.0]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
[root@ecs-dc69 gcc-9.3.0]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
[root@ecs-dc69 gcc-9.3.0]# wget ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
编译和安装完gcc后,检查下正确性:
[root@ecs-dc69 gcc-build]# which gcc
/usr/local/bin/gcc
[root@ecs-dc69 gcc-build]# which g++
/usr/local/bin/g++
[root@ecs-dc69 gcc-build]# gcc --version
gcc (GCC) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@ecs-dc69 gcc-build]# g++ --version
g++ (GCC) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[root@ecs-dc69 gcc-build]#
4.3 设置环境变量
[root@ecs-dc69 ~]# export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
[root@ecs-dc69 ~]# export CC=gcc CXX=g++
4.4 编译ClickHouse
下载ClickHouse依赖包:
[root@ecs-dc69 ~]# cd ClickHouse/
[root@ecs-dc69 ClickHouse]# git submodule update --init --recursive
注意:这里如果因为网络问题,也可以自行下载并上传子模块代码(注意子模块代码版本信息),但不要执行上面命令。
[root@ecs-dc69 ClickHouse]# mkdir build && cd build
[root@ecs-dc69 build]# cmake ../
[root@ecs-dc69 build]# make -j8
5 测试验证
启动进程
[root@ecs-dc69 build]# ./programs/clickhouse-server
启动客户端
创建1张MergeTree表,然后插入2条记录并读取:
[root@ecs-dc69 build]# ./programs/clickhouse-client --multiline
ClickHouse client version 20.9.4.1.
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.9.4 revision 54439.
ecs-dc69 :)
ecs-dc69 :) create table table1 (
:-] `EventDate` DateTime,
:-] `id` UInt64
:-] ) engine = MergeTree()
:-] partition by toYYYYMM(EventDate)
:-] order by id;
CREATE TABLE table1
(
`EventDate` DateTime,
`id` UInt64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(EventDate)
ORDER BY id
Ok.
0 rows in set. Elapsed: 0.004 sec.
ecs-dc69 :) INSERT INTO table1 VALUES ('2020-01-01 01:01:01', 1);
INSERT INTO table1 VALUES
Ok.
1 rows in set. Elapsed: 0.004 sec.
ecs-dc69 :) INSERT INTO table1 VALUES ('2020-01-01 01:01:02', 2);
INSERT INTO table1 VALUES
Ok.
1 rows in set. Elapsed: 0.001 sec.
ecs-dc69 :) select * from table1;
SELECT *
FROM table1
┌───────────EventDate─┬─id─┐
│ 2020-01-01 01:01:01 │ 1 │
└─────────────────────┴────┘
┌───────────EventDate─┬─id─┐
│ 2020-01-01 01:01:02 │ 2 │
└─────────────────────┴────┘
2 rows in set. Elapsed: 0.002 sec.
ecs-dc69 :)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)