百分点大数据技术团队:ClickHouse国家级项目最佳实践

编者按

ClickHouse自从2016年开源以来,在数据分析(OLAP)领域火热,各个大厂纷纷跟进大规模使用,百分点在某国家级项目中的完成了多数据中心的ClickHouse集群建设,目前存储总量超10PB,日增数据100TB左右,预计流量今年会扩大3倍。本文是结合百分点在前期设计中的经验对ClickHouse做的整理,其中百分点最佳实践部分是基于我们的业务场景以及数据规模,经过大量的测试及总结后得到的结论,并且充分保证了整个系统日后的稳定运行,极具参考意义。

作者:百分点邹立民 赵群

百分点大数据技术团队:ClickHouse国家级项目最佳实践

 

ClickHouse是"战斗民族"俄罗斯搜索巨头Yandex公司开源的一个极具"战斗力"的实时数据分析数据库,是面向 OLAP 的分布式列式DBMS,圈内人戏称为"喀秋莎数据库"。ClickHouse简称"CH",但在中文社区里大家更偏爱"CK",反馈是因为有"AK"的感觉!与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:列式存储数据库,数据压缩;关系型、支持SQL;分布式并行计算,把单机性能压榨到极限;高可用;数据量级在PB级别。

适用场景从社区分享的案例看主要有以下3类:日志数据的行为分析,标签画像的分析,数据集市层分析。百分点除了以上应用场景应用外,还作为存储引擎集成在了产品内部,应用于知识图谱作为本体数据存储,及标签数据的存储引擎等。

· 绝大多数请求都是用于读访问

· 表很"宽",即表中包含大量的列

· 在处理单个查询时需要高吞吐量

· 每次查询中大多数场景查询一个大表

· 查询结果显著小于数据源,即数据有过滤或聚合

 

在使用ClickHouse之前需要明确一些核心概念,在此我们梳理了五个概念进行分享:

(1) 表引擎(Engine)

表引擎决定了数据在文件系统中的存储方式,常用的也是官方推荐的存储引擎是MergeTree系列,如果需要数据副本的话可以使用ReplicatedMergeTree系列,相当于MergeTree的副本版本。读取集群数据需要使用分布式表引擎Distribute。常用的引擎见【附常用引擎】的内容。

(2) 表分区(Partition)

表中的数据可以按照指定的字段分区存储,每个分区在文件系统中都是都以目录的形式存在。常用时间字段作为分区字段,数据量大的表可以按照小时分区,数据量小的表可以在按照天分区或者月分区,查询时,使用分区字段作为Where条件,可以有效的过滤掉大量非结果集数据。

(3) 分片(Shard)

一个分片本身就是ClickHouse一个实例节点,分片的本质就是为了提高查询效率,将一份全量的数据分成多份(片),从而降低单节点的数据扫描数量,提高查询性能。这里先埋一个问题,当其中一个分片查询异常的时候,我们如何处理呢?选择1返回异常;选择2 跳过异常节点;见【参数实践】的内容。

(4) 复制集(Replication)

简单理解就是相同的数据备份,在CK中通过复制集,我们实现保障了数据可靠性外,也通过多副本的方式,增加了CK查询的并发能力。这里一般有2种方式:1、基于ZooKeeper的表复制方式;2、基于Cluster的复制方式。由于我们推荐的数据写入方式本地表写入,禁止分布式表写入,所以我们的复制表只考虑ZooKeeper的表复制方案。

(5)集群(Cluster)

可以使用多个ClickHouse实例组成一个集群,并统一对外提供服务。

百分点最佳实践

  • 部署安装

(1) 部署包的获取

ClickHouse官方并没有提供RPM安装包,这里就为大家提供一个标准渠道。资源地址:https://packagecloud.io/Altinity。页面提供2个目录:

百分点大数据技术团队:ClickHouse国家级项目最佳实践

 

clickhouse目录下多为测试版更新,更新速度快;

clickhouse-altinity-stable目录为稳定版发布目录。

(2) 部署包说明

ClickHouse安装部署需要四个安装包:

clickhouse-client.rpm

clickhouse-common-static.rpm

clickhouse-server.rpm

clickhouse-server-common4.rpm

(3) 部署方式

下载安装包时要对应版本下载四个安装包,将四个安装包拷贝到统一目录下,执行rpm -ivh * 即可完成安装。

安装完成后的主要目录以及文件说明:

/etc/clickhouse-server:配置文件目录,包括:config.xml和users.xml

/etc/clickhouse-client:客户端配置文件目录

/var/lib/clickhouse:默认数据目录

/var/log/clickhouse-server:默认日志目录

/etc/init.d/clickhouse-server:启动shell脚本

/etc/security/limits.d/clickhouse.conf:最大文件打开数的配置

/etc/cron.d/clickhouse-server:定时任务配置,默认没有任务

/usr/bin/clickhouse-client:clickhouse客户端

  • 服务器的选择

百分点大数据技术团队:ClickHouse国家级项目最佳实践

 

如上图,是我们的线上服务器情况,ClickHouse查询使用并行处理机制,对CPU和内存的要求还是比较高的,不建议单台机器上部署多个节点,同时也要求ClickHouse节点与集群中ZooKeeper节点分开,防止高负载下相互影响。

由于当时使用的ClickHouse版本不支持多数据盘,所以选择一个合适的Raid方式也是很多人关心的问题,这里我们直接建议Raid5,注意配置热备盘,这样无论从磁盘IO,数据可靠性,数据恢复,及运维复杂度来说都提供了很好的保障。这里也给出了Raid5情况下的磁盘恢复的影响,供大

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值