Clickhouse
Posted 骆驼整理说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章