Clickhouse

Posted 骆驼整理说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Clickhouse相关的知识,希望对你有一定的参考价值。

目录

Clickhouse简介

整体架构

数据接入层

数据存储层

数据服务层

数据应用层


Clickhouse简介

目前企业用户行为日志每天百亿量级,虽然经过数仓的分层以及数据汇总层通用维度指标的预计算,有些个性化的分析场景还是需要直接编写程序或sql查询,这种情况下hive sql和spark sql的查询性能已无法满足用户需求,需要一个OLAP引擎来支持快速的查询。BI存储库主要采用的是Infobright,在千万量级能很快的响应BI的查询请求,但随着时间推移和业务的发展,Infobright的并发量与查询瓶颈日益凸显,尝试将大数据量级的表导入TiDB、Hbase、ES等存储库,虽然对查询有一定的提速,但是也存在着相应的问题,这时考虑到Clickhouse。Clickhouse社区活跃度高、版本迭代快,几乎几天到十几天更新一个小版本,看好它以后的发展。

Clickhouse是俄罗斯yandex公司于2016年开源的一个列式数据库管理系统,在OLAP领域像一匹黑马一样,以其超高的性能受到业界的青睐。特性:

  • 基于shard+replica实现的线性扩展和高可靠

  • 采用列式存储,数据类型一致,压缩性能更高

  • 硬件利用率高,连续IO,提高了磁盘驱动器的效率

  • 向量化引擎与SIMD提高了CPU利用率,多核多节点并行化大查询

  • 不支持事务、异步删除与更新

  • 不适用高并发场景

整体架构

将Clickhouse的应用架构划分为4个层级:

数据接入层

提供了数据导入相关的服务及功能。

数据存储层

数据存储层这里我们采用双副本机制来保证数据的高可靠,同时用nginx代理clickhouse集群,通过域名的方式进行读写操作,实现了数据均衡及高可靠写入,且对于域名的响应时间及流量有对应的实时监控,一旦响应速度出现波动或异常我们能在第一时间收到报警通知。

  • nginx_one_replication:代理集群一半节点即一个完整副本,常用于写操作,在每次提交数据时由nginx均衡路由到对应的shard表,当某一个节点出现异常导致写入失败时,nginx会暂时剔除异常节点并报警,然后另选一台节点重新写入。

  • nginx_two_replication:代理集群所有节点,一般用作查询和无副本表数据写入,同时也会有对于异常节点的剔除和报警机制。

数据服务层

  • 对外:将集群查询统一封装为scf服务(RPC),供外部调用。

  • 对内:提供了客户端工具直接供分析师及开发人员使用。

数据应用层

  • 埋点系统:对接实时clickhouse集群,提供秒级别的OLAP查询功能。

  • 用户分析平台:通过标签筛选的方式,从用户访问总集合中根据特定的用户行为捕获所需用户集。

  • BI:提供数据应用层的可视化展示,对接单分片多副本Clickhouse集群,可横向扩展。

以上是关于Clickhouse的主要内容,如果未能解决你的问题,请参考以下文章

如何将较旧的 clickhouse 分区移动到 S3 磁盘 [关闭]

clickhouse-FREEZE分区操作

Clickhouse 系列

Clickhouse 系列

clickhouse集群迁移实践

clickhouse集群迁移实践