clickhouse部署流程

一、概述

clickhouse是一个数据库管理系统,对于数据的读写、存储、查询、修改、复制、事务、效率等有其独特的方法架构论;另外它是列式存储的,将一列数据作为最小的存储单元,需要多少列读多少列,减少了IO的数据量,提升了效率;最后它适合分析结构化的、干净的、不可变的流式数据,作为olap是很好的选择。

二、安装部署

clickhouse的分布式是由分片(shard)+副本(replica)来实现的,数据的一致性、高可用及容错是结合zookeeper来控制的。所以生产环境上决定采用4台机器来搭建clickhouse集群(2shard * 2 replica)。详细部署步骤如下:

1、查看机器是否支持SSE 4.2

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

2、通过yum安装clickhouse-server、clickhouse-client(每台机器都要),安装过程中可能需要升级glibc,解决办法https://cloud.tencent.com/developer/article/1463094。

yum install yum-utils
rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64search
yum install clickhouse-server clickhouse-client

3、修改默认配置文件config.xml



 
 trace
 /home/hadoop/logs/clickhouse-server/clickhouse-server.log
 /home/hadoop/logs/clickhouse-server/clickhouse-server.err.log
 1000M
 10
  
 
    
8123
9000

9009
192.168.16.1
0.0.0.0

 /home/hadoop/data/clickhouse/
 /home/hadoop/data/clickhouse/tmp/
 /home/hadoop/data/clickhouse/user_files/
 users.xml
 
 default
 
 
 
 

4、添加集群配置文件metrika.xml


    
    
    
    
    
    true
    
    192.168.16.1
    9000
    
    
    
    
    true
    
    192.168.16.2
    9010
    
    
    
    
    
    
    
    192.168.16.1
    2281
    
    
    192.168.16.2
    2281
    
    
    192.168.16.24
    2281
    
    

    
    hadooptest_clusters
    01 
    192.168.16.1 
    
    
    ::/0
    
    
    
    
    10000000000
    0.01
    lz4 
    
    

5、添加数据盘配置,冷热数据分离



    
        
            1024
        
        
            /home/hadoop/data/clickhouse/
        
        
            /home/hadoop/data/clickhouse/
            10485760
        
    

    
        
            
                
                    fast
                    1073741824
                
                
                        normal
                
        
        0.2
        
    


6、配置用户权限



 
 
 
 
          101310968832          50655484416
 101310968832         1
 0
 random
 
 
 1
 
 

 
 
 
 3600
 0
 0
 0
 0
 0
 
 
 

 
 
 
 MVZqc4ne
 
 ::/0
 

 
 default

 
 default

 
 
 
 
 
 a = 1
 

 
 
 a + b < 1 or c - d > 5
 
 
 c = 1
 
 
 
 
 
 645cb15583a65c5b7d89f02b37a97fe162e79dafdacb7450de2a679ff602c9ea
 
 ::/0
 
 default
 default
 
 

7、由于需要用到zookeeper来管理,这里选择单独安装zookeeper。

7.1、将线上腾讯云的kafka安装包copy到新机器。

7.2、配置zoo.cfg文件

# The number of milliseconds of each tick
tickTime=2000
initLimit=10
dataDir=/home/hadoop2/zookeeper
clientPort=2181
minSessionTimeout=6000
maxSessionTimeout=180000
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
server.21=hadoop1:2888:3888
server.22=hadoop2:2888:3888
server.23=hadoophadoop3:2888:3888
maxClientCnxns=500

7.3、启动zookeeper

bin/zkServer.sh  start

8、启动clickhouse server

service clickhouse-server start

9、查看日志是否异常,连接clickhouse-client测试建表,导数,查询等。

clickhouse-client -h 192.168.16.1 --port 9000 -u bi_test --password Ny3jTUoTQUlQAb4i

hadoop2 :) select count(*) from dws_sb_olap_user_basic_1d;

SELECT count(*)
FROM dws_sb_olap_user_basic_1d

┌─count()─┐
│  475835 │
└─────────┘

1 rows in set. Elapsed: 0.005 sec. Processed 475.83 thousand rows, 475.83 KB (92.74 million rows/s., 92.74 MB/s.)

三、clickhouse表引擎使用介绍

clickhouse的表引擎决定了数据的存放和读取方式,从而也就决定了IO效率。不同的表引擎主要决定以下几点:

  • 数据存储和读取的位置

  • 支持哪些查询方式

  • 能否并发式访问数据

  • 能不能使用索引

  • 是否可以执行多线程请求

  • 数据复制使用的参数

这里主要介绍三种表引擎:MergeTree、ReplicatedMergeTree、Distributed。

  • MergeTree

四、监控及后期维护

1、监控

此次监控采取clickhouse exporter + prometheus + grafana方式。

1.1、在centos 7的机器上安装docker

#安装
yum -y install docker
#启动
service docker start
#验证
docker version
docker run hello-world

1.2、重新制作clickhouse exporter的镜像(因为需要更改相关环境变量)

#编写dockerfile,将参数传递进去
#Dockerfile
FROM docker.io/f1yegor/clickhouse-exporter
ADD clickhouse_exporter_start.sh /opt/clickhouse_exporter_start.sh
ENTRYPOINT ["/opt/clickhouse_exporter_start.sh"]
#clickhouse_exporter_start.sh
#!/bin/sh
export CLICKHOUSE_USER=default
export CLICKHOUSE_PASSWORD=**********
/usr/local/bin/clickhouse_exporter $*
#制作镜像
docker build -t ck_clickhouse_exporter .
#查看镜像
╰─># docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
ck_clickhouse_exporter               latest              3384e729d116        23 hours ago        19.6 MB
docker.io/f1yegor/clickhouse-exporter   latest              9d9bfc1c7cb2        9 months ago        19.6 MB
docker.io/hello-world                   latest              fce289e99eb9        11 months ago       1.84 kB
docker run -d -p 9116:9116 ck_clickhouse_exporter -scrape_uri=http://ip1:8123/
docker run -d -p 9117:9116 ck_clickhouse_exporter -scrape_uri=http://ip2:8123/
docker run -d -p 9118:9116 ck_clickhouse_exporter -scrape_uri=http://ip3:8123/
docker run -d -p 9119:9116 ck_clickhouse_exporter -scrape_uri=http://ip4:8123/

1.4、编辑prometheus配置文件,加入刚才启动的exporter。

 - job_name : 'clickhouse'
 scrape_interval:     30s
 static_configs:
 - targets: ['ck1:9116','ck1:9117','ck1:9118','ck1:9119']
 labels:
 env: 'tx_clickhouse'

1.5、导入dashboard到grafana

先将开源的dashboard导入grafana然后再根据具体需要做调整。

1.6、利用prometheus的alter manager设置报警。

配置rules

groups:
- name: Clickhouse监控规则
 rules:
 - alert: "clickhouse实例状态告警"
 expr: clickhouse_version_integer != 19016003
 for: 3m
 labels:
 severity: critical

 annotations:
 summary: "Clickhouse实例异常"
 description: "Clickhouse {{$labels.instance}}实例状态异常 当前状态:{{ $value }}"

 - alert: "Clickhouse查询告警"
 expr: clickhouse_memory_tracking > 32212254720
 for: 3m
 labels:
 severity: critical

 annotations:
 summary: "Clickhouse查询内存异常"
 description: "Clickhouse {{$labels.exported_instance}}实例查询内存大于30G 当前状态:{{ $value }}"

后续再补充相关报警。

1.7、编写alertmanager_webhook相关邮件或者短信接口服务。

2、扩容

2.1、机器cpu内存扩容,因为是云主机可直接申请升配。

2.2、机器磁盘扩容,添加磁盘后可参考冷热数据分离配置不同的数据分布方式,也可以手动更改表数据分区的磁盘分布。

ALTER TABLE table_name MOVE PARTITION|PART partition_expr TO DISK|VOLUME 'disk_name'

你可能感兴趣的:(clickhouse部署流程)