ClickHouse安装及结构说明
一、ClickHouse安装方式
源码编译安装
Docker安装
RPM包安装
为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明。
二、下载安装包
官方没有提供rpm包,但是Altinity第三方公司提供了。
地址:https://packagecloud.io/altinity/clickhouse
三、配置文件
安装好rmp包后,默认配置文件在/etc/clickhouse-server/目录下,主要涉及以下3种配置文件,也可以自定义配置文件位置,如果修改了目录记得连带修改启动脚本。
vi /etc/init.d/clickhouse-server
12 CLICKHOUSE_USER=clickhouse
13 CLICKHOUSE_GROUP=${CLICKHOUSE_USER}
14 SHELL=/bin/bash
15 PROGRAM=clickhouse-server
16 GENERIC_PROGRAM=clickhouse
17 EXTRACT_FROM_CONFIG=${GENERIC_PROGRAM}-extract-from-config
18 SYSCONFDIR=/data/clickhouse
19 CLICKHOUSE_LOGDIR=/data/clickhouse/logs
20 CLICKHOUSE_LOGDIR_USER=root
21 CLICKHOUSE_DATADIR_OLD=/data/clickhouse
22 LOCALSTATEDIR=/data/clickhouse/lock
23 BINDIR=/usr/bin
24 CLICKHOUSE_CRONFILE=/etc/cron.d/clickhouse-server
25 CLICKHOUSE_CONFIG=$SYSCONFDIR/config.xml
26 LOCKFILE=$LOCALSTATEDIR/$PROGRAM
27 RETVAL=0
29 CLICKHOUSE_PIDDIR=/var/run/$PROGRAM
30 CLICKHOUSE_PIDFILE="$CLICKHOUSE_PIDDIR/$PROGRAM
config.xml 全局信息配置文件
error
/data/clickhouse/logs/clickhouse.log
/data/clickhouse/logs/error.log
500M
5
system
query_log
toMonday(event_date)
7500
8123
9000
9009
本机IP
0.0.0.0
4096
800
800
300
1000
8589934592
5368709120
/data/clickhouse/
/data/clickhouse/tmp/
users.xml
default
1
default
3600
3600
300
0
300
600
2
0
0
/clickhouse/task_queue/ddl
/etc/clickhouse-server/metrika.xml
users.xml 用户信息配置文件
10000000000
0
random
10000000000
0
random
1
0
0
0
0
0
65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460
::/0
default
default
65b84b497ef843f7c9629251a64e307caecbf7327975af4d18f83261239e1460
::/0
readonly
default
metrika.xml 集群信息配置文件
true
192.168.1.1
9000
default
password
192.168.1.2
9000
default
Password
true
192.168.1.3
9000
default
Password
192.168.1.4
9000
default
Password
192.168.1.5
2181
192.168.1.6
2181
192.168.1.7
2181
01
01
192.168.1.1
::/0
10000000000
0.01
lz4
四、ClickHouse常用架构
单实例
无需过多解释,就是单机部署,安装好rpm包后,简单修改配置文件即可启动;
单实例不建议线上使用,只做功能测试;
MergeTree,引擎适用于单机实例,查询性能非常高。
分布式+高可用集群
ClickHouse引擎有十几个,不同引擎实现不同功能,实现分布式高可用主要通过以下两种引擎:
ClickHouse分布式通过配置文件来实现,同一集群配置多个分片,每个节点,都配置同样的配置文件;而高可用需要借助zookeeper来实现,ReplicatedMergeTree里共享同一个ZK路径的表,会相互同步数据。
ReplicatedMergeTree,复制引擎,基于MergeTree,实现数据复制,即高可用;
Distributed,分布式引擎,本身不存储数据,将数据分发汇总。
五、分布式高可用集群架构
以下是2个分片、2个副本集的架构,zookeeper机器可以跟ClickHouse共用,但是如果压力较大,IO消耗较多,可能会延迟,建议分开。
role | shard1 | shard2 |
replica | 192.168.1.1 | 192.168.1.3 |
replica | 192.168.1.2 | 192.168.1.4 |
zookeeper集群:
index | node |
1 | 192.168.1.5 |
2 | 192.168.1.6 |
3 | 192.168.1.7 |
六、安装zookeeper集群,至少3台
1、下载安装包,建议3.4.9之后的版本
http://archive.apache.org/dist/zookeeper/
2、解压
tar zxf /usr/local/test/clickhouse/zookeeper-3.4.13.tar.gz -C /usr/local
mv /usr/local/zookeeper-3.4.13 /usr/local/zookeeper
3、创建目录:
mkdir /data/zookeeper/data
mkdir /data/zookeeper/logs
4、指定节点号
echo '1' > /data/zookeeper/data/myid
5、zookeeper配置文件
/usr/local/zookeeper/conf/zoo.cfg
tickTime=2000 | 基本时间单位, 毫秒值 |
initLimit=30000 | tickTime的倍数,follower和leader之间的最长心跳时间 |
syncLimit=10 | tickTime的倍数,leader和follower之间发送消息, 请求和应答的最大时间 |
dataDir=/export/data/zookeeper/data | 数据目录 |
dataLogDir=/export/data/zookeeper/logs | 日志目录,如果没设定,默认和dataDir相同 |
clientPort=2181 | 监听client连接的端口号 |
maxClientCnxns=2000 | zookeeper最大连接 |
maxSessionTimeout=60000000 | 最大的会话超时时间 |
autopurge.snapRetainCount=10 | 保留的文件数目,默认3个 |
autopurge.purgeInterval=1 | 自动清理snapshot和事务日志,清理频率,单位是小时 |
globalOutstandingLimit=200 | 等待处理的最大请求数量 |
preAllocSize=131072 | 日志文件大小Kb,切换快照生成日志 |
snapCount=3000000 | 两次事务快照之间可执行事务的次数,默认的配置值为100000 |
leaderServes=yes | leader是否接受client请求,默认为yes即leader可以接受client的连接,当节点数为>3时,建议关闭 |
server.1=192.168.1.5:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
server.2=192.168.1.6:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
server.3=192.168.1.7:2888:3888 | 2888 leader\follower传输信息端口,3888推举端口 |
6、启动
/usr/local/zookeeper/bin/zkServer.sh [start\status\stop]
七、安装clickhouse
1、下载并安装上面rpm安装包
2、参考配置上面的配置文件
如果采用上面的配置文件需要创建目录
3、mkdir -p /data/clickhouse/tmp /data/clickhouse/logs /data/clickhouse/lock/
4、修改权限
chown clickhouse.clickhouse -R /data/clickhouse
5、启动(有两种方式)
/etc/init.d/clickhouse-serve start
或
clickhouse-server --daemon --config-file=/etc/clickhouse-server/config.xml
6、登录验证
clickhouse-client -u default --password password -h127.0.0.1
7、目录结构
Metadata:元数据目录,.sql文件
Data:数据目录
Logs:日志目录,错误日志再次目录下
其他目录暂时无需了解
8、数据文件
在items表的每一个part子目录中,存放如下文件下面这些文件:
columns.txt:记录列信息
count.txt:记录总数
checksums.txt:数据校验
.bin:每列都有,存储实际数据
.mrk文件:bin数据文件中,索引粒度偏移量(index_granularity (usually, N = 8192)
minmax_EventDate.idx:时间字段索引
primary.idx:存储主键信息,存储在内存中
这里展示了mrk文件和primary文件的具体结构,可以看到,数据是按照主键排序的,并且会每隔一定大小分隔出很多个block。每个block中也会抽出一个数据作为索引,放到primary.idx和各列的mrk文件中。
而利用mergetree进行查询时,最关键的步骤就是定位block,这里会根据查询的列是否在主键内有不同的方式。根据主键查询时性能会较好,但是非主键查询时,由于按列存储的关系,虽然会做一次全扫描,性能也没有那么差。所以索引在clickhouse里并不像mysql那么关键。实际使用时一般需要添加按日期的查询条件,保障非主键查询时的性能。
找到对应的block之后,就是在block内查找数据,获取需要的行,再拼装需要的其他列数据。
————————————————
版权声明:本文为CSDN博主「MYSQL轻松学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liang_0609/article/details/86707799