术语:
分片:按列/字段进行分区,不同的分区放置到不同文件中
分区:分区的副本或者COPY,放置到不同服务器上
1.下载Clickhouse安装包
Altinity/clickhouse - Packages · packagecloud
或
官网下载地址:Index of /clickhouse/
官网中文手册:安装部署 | ClickHouse文档
2.安装Clickhouse之前需要安装相关依赖包,否则会报错
yum install -y libtool
yum install -y *unixODBC*
yum install libicu.x86_64
yum install perl-JSON.noarch -y(可选)
3.上传安装包到Linux服务器响应文件夹下,进行安装
rpm -ivh clickhouse-*
如果提示如下错误:删除Clickhouse-test-xxxx 包即可
4.修改Clickhouse配置文件
clickhouse的server配置文件,默认路径在/etc/clickhouse-server/config.xml及user.xml,
- config.xml是clickhouse的系统配置,包括日志,服务部署ip,zk等配置
- user.xml 是当前节点服务的配置,包括用户名密码,内存大小限制等
config.xml
同时将其他本地监视连接注释,0.0.0.0将导致本地的命令行客户端无法连接
如果不支持IP 6 ,保持注释状态(可选-将127.1.0.1 改为 0.0.0.0)
5.启动Clickhouse 或者关闭Clickhouse
sudo service clickhouse-server start #启动Clickhouse
sudo service clickhouse-server stop #停止Clickhouse
sudo service clickhouse-server restart #重启Clickhouse
service clickhouse-server status #查看服务状态
6.客户端连接Clickhouse
clickhouse-client –host 192.168.152.128 –port 9000 –database default –user default –password ""
7.使用DBeaver链接Clickhouse
systemctl status firewalld #查看防火墙
systemctl stop firewalld #关闭防火墙
systemctl enable firewalld.service #设置开机启用防火墙
systemctl disable firewalld.service #设置开机禁用防火墙
Systemctl disable firewalld
关闭防火墙
系统默认表
8.Clickhouse SQL语法
Create database 数据库名称; --创建数据库
CREATE TABLE 表名(
字段名称 字段类型,
字段名称 字段类型,
。。。。
) ENGINE=。。。 --创建表
INSERT INTO [db.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ... --插入数据
SELECT sum(ALL number) FROM numbers(10); --查询数据
创建数据库:
创建表:
插入数据:
查询数据:select * from test.t1 t
9.官网样本数据测试
下载官网样本数据
https://datasets.clickhouse.com/cell_towers.csv.xzhttps://datasets.clickhouse.com/cell_towers.csv.xz校验数据集:md5sum cell_towers.csv.xz
解压数据集:xz -d cell_towers.csv.xz
xz -d cell_towers.csv.xz
数据类型参考官网:简介 | ClickHouse文档https://clickhouse.com/docs/zh/sql-reference/data-types/
创建表
CREATE TABLE cell_towers
(
radio Enum8('' = 0, 'CDMA' = 1, 'GSM' = 2, 'LTE' = 3, 'NR' = 4, 'UMTS' = 5),
mcc UInt16,
net UInt16,
area UInt16,
cell UInt64,
unit Int16,
lon Float64,
lat Float64,
range UInt32,
samples UInt32,
changeable UInt8,
created DateTime,
updated DateTime,
averageSignal UInt8
)
ENGINE = MergeTree ORDER BY (radio, mcc, net, created);
导入数据:
clickhouse-client --query "INSERT INTO test.cell_towers FORMAT CSVWithNames" < cell_towers.csv
统计数据记录数:
clickhouse-client ?host 192.168.152.128 ?port 9000 ?database default ?user default ?password ""
或
clickhouse-client --query "select count(*) from test.cell_towers ct " --看不见计算时间
数据分组:
SELECT radio, count() AS c FROM test.cell_towers GROUP BY radio ORDER BY c DESC
mcc分组统计:
SELECT mcc, count() FROM test.cell_towers GROUP BY mcc ORDER BY count() DESC LIMIT 10
常见问题:
问题一:
<Error> Application: DNS error: EAI: -9
解决:
本机没有开放ipv6,只能对ipv4生效。可以考虑在config.xml中,把<listen_host>::</listen_host> 改成<listen_host>0.0.0.0</listen_host>
问题二:
:Memory limit (for query) exceeded: would use 9.31 GiB (attempt to allocate chunk of 1048576 bytes), maximum: 9.31 GiB
解决:
修改user.xml里max_memory_usage 值,把他改大一些,默认是953M,不到1G,可以改到2G