ClickHouse安装及数据结构

ClickHouse安装及结构说明

一、ClickHouse安装方式

  • 源码编译安装
  • Docker安装
  • RPM包安装

为了方便使用,一般采用RPM包方式安装,其他两种方式这里不做说明。

二、下载安装包

官方没有提供rpm包,但是Altinity第三方公司提供了。

地址:https://packagecloud.io/altinity/clickhouse

ClickHouse安装及数据结构_第1张图片

三、配置文件

安装好rmp包后,默认配置文件在/etc/clickhouse-server/目录下,主要涉及以下3种配置文件,也可以自定义配置文件位置,如果修改了目录记得连带修改启动脚本。

  1. 默认启动脚本,注意,这个名字虽然叫server,其实是个shell脚本

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常用架构

  1. 单实例

无需过多解释,就是单机部署,安装好rpm包后,简单修改配置文件即可启动;

单实例不建议线上使用,只做功能测试;

MergeTree,引擎适用于单机实例,查询性能非常高。

  1. 分布式+高可用集群

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、目录结构

ClickHouse安装及数据结构_第2张图片

Metadata:元数据目录,.sql文件

Data:数据目录

Logs:日志目录,错误日志再次目录下

其他目录暂时无需了解

8、数据文件

ClickHouse安装及数据结构_第3张图片

在items表的每一个part子目录中,存放如下文件下面这些文件:

columns.txt:记录列信息

count.txt:记录总数

checksums.txt:数据校验

.bin:每列都有,存储实际数据

.mrk文件:bin数据文件中,索引粒度偏移量(index_granularity (usually, N = 8192)

minmax_EventDate.idx:时间字段索引

primary.idx:存储主键信息,存储在内存中

ClickHouse安装及数据结构_第4张图片

这里展示了mrk文件和primary文件的具体结构,可以看到,数据是按照主键排序的,并且会每隔一定大小分隔出很多个block。每个block中也会抽出一个数据作为索引,放到primary.idx和各列的mrk文件中。

而利用mergetree进行查询时,最关键的步骤就是定位block,这里会根据查询的列是否在主键内有不同的方式。根据主键查询时性能会较好,但是非主键查询时,由于按列存储的关系,虽然会做一次全扫描,性能也没有那么差。所以索引在clickhouse里并不像mysql那么关键。实际使用时一般需要添加按日期的查询条件,保障非主键查询时的性能。

找到对应的block之后,就是在block内查找数据,获取需要的行,再拼装需要的其他列数据。

 

 

你可能感兴趣的:(clickhouse)