clickhouse分析:zookeeper数据存储

  • 安装clickhouse

安装全新的clickhouse,暂无数据。

  • 开启debug级别的日志

在config.xml中,开启<level>debug</level>模式,便于查看日志内容。

  • 创建复制表

建表语句:

create table test_test
(
    Id               Int32,
    YearMonth        Int32,
    DeviceType       String
) engine = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/default_test',
'{replica}') PARTITION BY YearMonth ORDER BY (YearMonth, DeviceType) SETTINGS index_granularity = 8192;

以下为zookeeper存储的内容:

主要存储了一些建表的数据和数据块等信息。

  • 查看zookeeper存储的内容

插入一条数据到复制表中:

insert into test_test(Id,YearMonth,DeviceType) values (1,202001,'D1-2');

zookeeper显示的内容:

在分区中多出了内容,出现了202001_0_0_0的文件夹,该文件夹为我们导入的分区的文件夹,存储的内容如下:

再次写入同分区的数据:

insert into test_test(Id,YearMonth,DeviceType) values (2,202001,'D1-3');

zookeeper显示:

本地磁盘:

此时同分区的数据还未merge,官方文档提示merge将在接下来的十几分钟内完成,我们也可以手动执行:

OPTIMIZE TABLE test_test PARTITION 202001;

此时磁盘的显示:

zookeeper的显示:

不仅没有删除,还多了一个,我们通过查询语句:

select * from system.parts where table='test_test';

显示:

active中只有一个为活跃状态1,rows也为2,证明该数据块已经是merge后的,只是剩下的这两个暂时还没有被删除。

过个几分钟可以发现之前的数据块已经被删除,同时zookeeper也保持着最新的数据块状态:

  • 查询在zookeeper中的存储

目前观察,在存储中还未发现有查询在zookeeper中的存储数据,在config.xml中有一个配置:

 <!-- Allow to execute distributed DDL queries (CREATE, DROP, ALTER, RENAME) on cluster.
         Works only if ZooKeeper is enabled. Comment it if such functionality isn't required. -->
    <distributed_ddl>
        <!-- Path in ZooKeeper to queue with DDL queries -->
        <path>/clickhouse/task_queue/ddl</path>

        <!-- Settings from this profile will be used to execute DDL queries -->
        <!-- <profile>default</profile> -->
    </distributed_ddl>

在上述的截图中也看到了这个目录:

我们来执行ddl的语句看下存储的内容:

drop table test_test on cluster 'cluster01';

这其中cluster01为我们集群的名字,在metrika.xml中配置,metrika.xml是通过config.xml中的<include_from>/etc/clickhouse-server/metrika.xml</include_from>导入的。

在ddl中显示出了我们的刚刚查询的语句,该语句会被分发到所有的节点执行,目前我们只有一个节点,该部分的数据也会随着执行语句的增多而增加。

  • 其它的注意事项

若你的集群中有多个节点,会出现如下节点:

其中01-01为layer-shard,在具体的节点内,还有replica,该部分包含的节点互为副本,也即是zookeeper会将这些副本的数据进行同步。这些也跟我们的建表语句有关,不同的建表语句可能出现不同的目录。

<macros>
<layer>01</layer>
<shard>01</shard>
<replica>cluster01-01-01</replica>
</macros>

log文件夹中记录了每次insert的一些简单信息,该部分的数据也会随着数据块的增加而增多:

format version: 4
create_time: 2020-01-21 11:09:42
source replica: cluster01-01-01
block_id: 202001_18140686589791493295_2460127323285304296
get
202001_0_0_0

执行完OPTIMIZE的merge命令后,新增了一条log显示如下:

format version: 4
create_time: 2020-01-21 11:14:28
source replica: cluster01-01-01
block_id: 
merge
202001_0_0_0
202001_1_1_0
202001_2_2_0
into
202001_0_2_1
deduplicate: 0

当merge完成后parts中当块数据会同样被删除,log文件不删除,会一直增加。若将表删除,则该表的所有记录都会从zookeeper中删除掉。

  • 附录:clickhouse安装等实例教程:

https://blog.csdn.net/zhangpeterx/article/details/95091335

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CLICKHOUSE是一种用于大数据分析和处理的列式数据库管理系统。它具有高性能和可伸缩性。而Zookeeper是一个开源的分布式协调服务,用于管理和协调大规模分布式系统中的配置信息、命名服务、集群管理等。CLICKHOUSEZookeeper之间有一些关联,特别是在复制表和数据一致性方面。 根据引用和,随着数据量的增加,Zookeeper可能成为CLICKHOUSE的瓶颈。为了解决这个问题,CLICKHOUSE官方团队提出了一些减压方案,其中之一是重新调整使用Zookeeper的方式,使用较小的数据量来完成复制表之间的数据一致性校验。这种与数据量无关的使用方式可以减轻Zookeeper的负担。 根据引用,在创建表时,可以使用`use_minimalistic_part_header_in_zookeeper`参数来指定表的建表语句。这个参数可以帮助减少在Zookeeper存储的镜像快照的大小,从而减轻Zookeeper的负担。 综上所述,CLICKHOUSEZookeeper之间存在一些关联,特别在复制表和数据一致性方面。CLICKHOUSE官方团队提出了一些减压方案来减轻Zookeeper的负担,包括重新调整使用方式和使用`use_minimalistic_part_header_in_zookeeper`参数来减少存储的镜像快照的大小。这些措施有助于优化CLICKHOUSE的性能和可伸缩性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [clickhouse分析zookeeper减压概述](https://blog.csdn.net/iceyung/article/details/107500073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值