ClickHouse官网地址 https://clickhouse.com/ 最新版本22.4.5.9
ClickHouse官网文档地址 https://clickhouse.com/docs/zh
ClickHouseGitHub源码地址 https://github.com/ClickHouse/ClickHouse
ClickHouse是俄罗斯的 Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告。ClickHouse的全称是Click Stream,Data WareHouse。ClickHouse可以做用户行为分析,流批一体,其线性扩展和可靠性保障能够原生支持 分片和副本,shard + replication,ClickHouse没有走hadoop生态自己实现分布式存储。
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。
官方预构建的二进制文件通常针对x86_64进行编译,并利用SSE 4.2
指令集,因此,除非另有说明,支持它的CPU使用将成为额外的系统需求。下面是检查当前CPU是否支持SSE 4.2的命令:
$ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
要在不支持SSE 4.2
或AArch64
,PowerPC64LE
架构的处理器上运行ClickHouse,您应该通过适当的配置调整从源代码构建ClickHouse。
安装包列表:
clickhouse-common-static
— ClickHouse编译的二进制文件。clickhouse-server
— 创建clickhouse-server
软连接,并安装默认配置服务clickhouse-client
— 创建clickhouse-client
客户端工具软连接,并安装客户端配置文件。clickhouse-common-static-dbg
— 带有调试信息的ClickHouse二进制文件。单机部署比较简单,执行完下面四条命令就可以通过clickhouse-client来操作了
yum install -y yum-utilsyum-config-manager --add-repo https://packages.clickhouse.com/rpm/clickhouse.repoyum install -y clickhouse-server clickhouse-client/etc/init.d/clickhouse-server start
ClickHouse集群是一个同质集群,操作步骤如下
<zookeeper> <node> <host>huawei27</host> <port>2181</port> </node> <node> <host>huawei28</host> <port>2181</port> </node> <node> <host>huawei29</host> <port>2181</port> </node> </zookeeper> <remote_servers> <perftest_3shards_3replicas> <shard> <replica> <host>ckserver1</host> <port>9000</port> </replica> <replica> <host>ckserver2</host> <port>9000</port> </replica> <replica> <host>huawei27</host> <port>9000</port> </replica> </shard> <shard> <replica> <host>ckserver1</host> <port>9000</port> </replica> <replica> <host>ckserver2</host> <port>9000</port> </replica> <replica> <host>huawei27</host> <port>9000</port> </replica> </shard> <shard> <replica> <host>ckserver1</host> <port>9000</port> </replica> <replica> <host>ckserver2</host> <port>9000</port> </replica> <replica> <host>huawei27</host> <port>9000</port> </replica> </shard> </perftest_3shards_3replicas> </remote_servers> <macros> <shard>01</shard> <replica>01</replica> </macros>
修改完配置后分别在三台上执行/etc/init.d/clickhouse-server start,查询集群信息如下
clickhouse-client
客户端支持命令行--host, -h
-– 服务端的host名称, 默认是localhost
。您可以选择使用host名称或者IPv4或IPv6地址。--port
– 连接的端口,默认值:9000。注意HTTP接口以及TCP原生接口使用的是不同端口。--user, -u
– 用户名。 默认值:default
。--password
– 密码。 默认值:空字符串。--query, -q
– 使用非交互模式查询。--database, -d
– 默认当前操作的数据库. 默认值:服务端默认的配置(默认是default
)。--multiline, -m
– 如果指定,允许多行语句查询(Enter仅代表换行,不代表查询语句完结)。--multiquery, -n
– 如果指定, 允许处理用;
号分隔的多个查询,只在非交互模式下生效。--format, -f
– 使用指定的默认格式输出结果。--vertical, -E
– 如果指定,默认情况下使用垂直格式输出结果。这与–format=Vertical
相同。在这种格式中,每个值都在单独的行上打印,这种方式对显示宽表很有帮助。--time, -t
– 如果指定,非交互模式下会打印查询执行的时间到stderr
中。--stacktrace
– 如果指定,如果出现异常,会打印堆栈跟踪信息。--config-file
– 配置文件的名称。--secure
– 如果指定,将通过安全连接连接到服务器。--history_file
— 存放命令历史的文件的路径。--param_<name>
— 查询参数配置。clickhouse-server
会在8123
端口上监控HTTP请求(这可以在配置中修改)。如果你发送了一个未携带任何参数的GET /
请求,它会返回一个字符串 ?Ok.?默认情况下,ClickHouse使用Atomic数据库引擎。它提供了可配置的table engines和SQL dialect。创建一个测试数据库
CREATE DATABASE test ENGINE = Atomic;use test;
# -m支持多行输入clickhouse-client -m
使用最常见的MergeTree表引擎创建一张用户信息表user_info
CREATE TABLE user_info( id INT, name String, age Int8, sex Int8, career INT, birthday Date) ENGINE = MergeTree()PARTITION BY toYYYYMM(birthday)ORDER BY (career, birthday);
# user_info插入两行数据insert into user_info values(100,'张三',27,1,1000,'1998-05-21'),(101,'李婷',28,2,1001,'2000-07-25');# 查询user_info数据select * from user_info;
至此,ClickHouse的环境已经完全准备就绪,下一篇我们先通过一个案例需求学习ClickHouse使用,然后再层层深入。