欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

clickhouse分布式集群搭建(还没弄完)

程序员文章站 2022-03-20 23:51:09
...

clickhouse属于OLAP数据库,读远远多于写[]

 

根据[1]

Clickhouse 仅支持 Linux 操作系统,且机器 CPU 必须支持 SSE 4.2 指令集。

引擎 介绍
MergeTree 是CK里最Advanced的引擎,性能超高,单机写入可以达到50w峰值,查询性能非常快
ReplicatedMergeTree 基于MergeTree,同时引入ZK,做了复制
Distributed 分布式引擎,本身不存储数据,可认为就是一张View,如果写入,会把请求丢到集群里的节点(有算法控制),如果查询,会帮你做查询转发再聚合返回

 

一些常用技巧归纳:

技巧 方法
clickhouse试用(官方提供了一个节点) https://play.clickhouse.tech/
集群clickhouse报错信息地址(必须使用root权限才能看到log信息,否则空白一片) /var/log/clickhouse-server/*
查看进程

service clickhouse-server status

 


#-----------------clickhouse应用场景[1]---------------------------

  1. 绝大多数请求都是用于读访问的
  2. 数据需要以大批次(大于1000行)进行更新,不是单行更新;或者根本没有更新操作
  3. 数据只是添加到数据库,没有必要修改
  4. 读取数据时,会从数据库中提取出大量的行,但只用到一小部分列
  5. 表很“宽”,即表中包含大量的列
  6. 查询频率相对较低(通常每台服务器每秒查询数百次或更少)
  7. 对于简单查询,允许大约50毫秒的延迟
  8. 列的值是比较小的数值和短字符串(例如,每个>URL只有60个字节)
  9. 在处理单个查询时需要高吞吐量(每台服务器每秒>高达数十亿行)
  10. 不需要事务
  11. 数据一致性要求较低
  12. 每次查询中只会查询一个大表。除了一个大表,其>余都是小表
  13. 查询结果显著小于数据源。即数据有过滤或聚合。返回结果不超过单个服务器内存大小

 

#-------------clickhouse的限制[1]------------------------------

  1. 支持真正的删除/更新支持 不支持事务(期待后续版本支>持)
  2. 不支持二级索引
  3. 有限的SQL支持,join实现与众不同
  4. 不支持窗口功能
  5. 元数据管理需要人工干预维护

#------------------------------------------------------

简单分布式方案[1]

MergeTree + Distributed

 

CREATE TABLE db.tb (date Date, ……) ENGINE = MergeTree(date, (date, hour, datetime), 8192)

CREATE TABLE db.tb_all (date Date, ……) ENGINE = Distributed(bip_ck_cluster, 'ck_test', 'dagger', rand())"
建表语句 备注
CREATE TABLE db.tb (date Date, ……) ENGINE = MergeTree(date, (date, hour, datetime), 8192) db.tb为本地表,数据只是在本地
CREATE TABLE db.tb_all (date Date, ……) ENGINE = Distributed(bip_ck_cluster, 'ck_test', 'dagger', rand())" db.tb_all为分布式表,查询这个表,引擎自动把整个集群数据计算后返回

#------------------------------------------------------

[2]clickhouse的集群涉及到三个文件,如果是自己一个人负责,

那么config.xml和users.xml是不需要修改的,因为都是性能参数,而不是架构部署相关的参数.

配置文件 作用
config.xml 全局信息配置文件(可选)
users.xml 用户信息配置文件(可选)
metrika.xml 集群信息配置文件(必须配置)

zookeeper按照[3]先搭建好,

 

一个简易的clickhouse分布式架构如下:

clickhouse分布式集群搭建(还没弄完)

role

shard1

shard2

集群

replica

192.168.1.1(Desktop)

192.168.1.3(Laptop)

集群1

replica

192.168.1.2

192.168.1.4

集群2

上述图和表格是互相对应的(务必看懂),我的手上是一台台式机(Desktop)和一台笔记本(Laptop),

所以两个节点就可以搭建分布式clickhouse集群了.

配置时注意,不要无脑拷贝配置文件,配置文件中每一句话都要看懂

#-------------------配置文件中一个不太好理解的地方-------------------

metrika.xml中有个不太好理解的地方[5]:

<macros>

<layer>01</layer>

<shard>03</shard> <!--表示cluster01集群的03分片下的1号副本-->

<replica>cluster01-03-1</replica>

</macros>

 

上面的配置什么意思?

01集群的03号分片,

这个分片名字叫做cluster01-03-1

本节点保存这个分片.

同一个{layer}-{shard}下面的表互为备份,会自动同步[6]
replica是备份序号的识别符,必须互不相同,可以设置为与该节点hostname相同[6]

#--------------------完整metrika.xml如下-----------------------

 

#------------------------------------------------------

/etc/clickhouse-server/config.xml中加入

<yandex>

.....  

  <include_from>/etc/clickhouse-server/metrika.xml</include_from>
</yandex>

#------------------------------------------------------

在集群中各个节点,分别执行

service clickhouse-server start

#------------------------------------------------------

启动时集群中各个节点必须有的进程:

域名 jps
Desktop 6576 NameNode
7601 ResourceManager
6757 DataNode
7847 NodeManager
72826 Jps
7324 QuorumPeerMain
Laptop 2243 NodeManager
2133 QuorumPeerMain
2038 DataNode
9550 Jps
2287 QuorumPeerMain

 

#-----------启动时集群中各个节点的服务状态-----------------------

aaa@qq.com:/home/appleyuchi# service clickhouse-server status
● clickhouse-server.service - ClickHouse Server (analytic DBMS for big data)
   Loaded: loaded (/etc/systemd/system/clickhouse-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-06-19 17:08:13 CST; 4min 11s ago
 Main PID: 70583 (clickhouse-serv)
    Tasks: 68 (limit: 4915)
   Memory: 1.9G
   CGroup: /system.slice/clickhouse-server.service
           └─70583 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.

6月 19 17:08:13 Desktop clickhouse-server[70583]: Including configuration file '/etc/clickhouse-server/metrika.xml'.
6月 19 17:08:13 Desktop clickhouse-server[70583]: Logging trace to /var/log/clickhouse-server/clickhouse-server.log
6月 19 17:08:13 Desktop clickhouse-server[70583]: Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
6月 19 17:08:13 Desktop clickhouse-server[70583]: Processing configuration file '/etc/clickhouse-server/users.xml'.
6月 19 17:08:13 Desktop clickhouse-server[70583]: Merging configuration file '/etc/clickhouse-server/users.d/default-password.xml'.
6月 19 17:08:13 Desktop clickhouse-server[70583]: Include not found: networks
6月 19 17:08:13 Desktop clickhouse-server[70583]: Saved preprocessed configuration to '/var/lib/clickhouse//preprocessed_configs/users.xml'.
6月 19 17:08:16 Desktop clickhouse-server[70583]: Processing configuration file '/etc/clickhouse-server/config.xml'.
6月 19 17:08:16 Desktop clickhouse-server[70583]: Including configuration file '/etc/clickhouse-server/metrika.xml'.
6月 19 17:08:16 Desktop clickhouse-server[70583]: Saved preprocessed configuration to '/var/lib/clickhouse//preprocessed_configs/config.xml'.

#------------------------------------------------------

连接命令:

clickhouse-client --host localhost  -u default  --password

查看集群信息命令:

SELECT * FROM system.clusters

集群信息如下:

clickhouse分布式集群搭建(还没弄完)

表中每一行表示一个节点的信息,

第一列表示,如果两行的第一列名字相同,那么这两行所代表的节点属于同一个集群

 

Reference:

[1]Clickhouse快速搭建高可用集群

[2]ClickHouse 分布式高可用集群搭建(转载)

[3]hbase的HA模式配置和维护

[4]ClickHouse分布式高可用集群搭建

[5]ClickHouse 高可用集群安装测试

[6]深入理解ClickHouse之5-ClickHouse集群的replica实现方式

[7]Clickhouse 入门教程(一)—— 安装与启动

[8]ClickHouse深度揭秘

相关标签: ClickHouse