Clickhouse由俄罗斯yandex公司开发。专为在线数据分析而设计。Yandex是俄罗斯搜索引擎公司。官方提供的文档表名,ClickHouse 日处理记录数”十亿级”。
特性:采用列式存储;数据压缩;支持分片,并且同一个计算任务会在不同分片上并行执行,计算完成后会将结果汇总;支持SQL;支持联表查询;支持实时更新;自动多副本同步;支持索引;分布式存储查询。
ClickHouse最大的特点就是快,快,快,重要的话说三遍!与Hadoop、Spark这些巨无霸组件相比,ClickHouse很轻量级,其特点:
- 列式存储数据库,数据压缩
- 关系型、支持SQL
- 分布式并行计算,把单机性能压榨到极限
- 高可用
- 数据量级在PB级别
- 实时数据更新
- 索引
使用ClickHouse也有其本身的限制,包括:
- 缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据。
- 没有完整的事务支持,不支持高并发
- 不支持二级索引
- 有限的SQL支持,join实现与众不同
- 不支持窗口功能
- 元数据管理需要人工干预维护
架构

数据接入层
-
方式一:数仓应用层小表导入
这类数据量级相对较小,且分布在不同的数据源如hdfs、es、hbase等,这时我们提供基于DataX自研的TaskPlus数据流转+调度平台导入数据,单分区数据无并发写入,多分区数据小并发写入,且能和线上任务形成依赖关系,确保导入程序的可靠性。方式二:离线多维明细宽表导入
这类数据一般是汇总层的明细数据或者是用户基于Hadoop生产的大量级数据,我们基于Spark开发了一个导入工具包,用户可以根据配置直接拉取hdfs或者hive上的数据到clickhouse,同时还能基于配置sql对数据进行ETL处理,工具包会根据配置集群的节点数以及Clickhouse集群负载情况(merges、processes)对local表进行高并发的写入,达到快速导数的目的。方式三:实时多维明细宽表导入
实时数据接入场景比较固定,我们封装了通用的ClickhouseSink,将app、pc、m三端每日百亿级的数据通过Flink接入clickhouse,ClickhouseSink也提供了batchSize(单次导入数据量)及batchTime(单次导入时间间隔)供用户选择。
-
nginx_one_replication:代理集群一半节点即一个完整副本,常用于写操作,在每次提交数据时由nginx均衡路由到对应的shard表,当某一个节点出现异常导致写入失败时,nginx会暂时剔除异常节点并报警,然后另选一台节点重新写入。 -
nginx_two_replication:代理集群所有节点,一般用作查询和无副本表数据写入,同时也会有对于异常节点的剔除和报警机制。
数据服务层
-
对外:将集群查询统一封装为scf服务(RPC),供外部调用。 -
对内:提供了客户端工具直接供分析师及开发人员使用。
数据应用层
-
埋点系统:对接实时clickhouse集群,提供秒级别的OLAP查询功能。 -
用户分析平台:通过标签筛选的方式,从用户访问总集合中根据特定的用户行为捕获所需用户集。 -
BI:提供数据应用层的可视化展示,对接单分片多副本Clickhouse集群,可横向扩展
-
选型对比
现有的Infobright与TiDB、Doris、Clickhouse做了如下对比。
功能点 | Infobright | TiDB | Doris | Clickhouse |
---|---|---|---|---|
BI适配成本 | – | 低 | 低 | 中 |
学习使用成本 | – | 低 | 低 | 低 |
百万级查询(100w) | 84ms | 24ms | 25ms | 41ms |
千万级查询(1000w) | 1330ms | 332ms | 130ms | 71ms |
亿级别查询(1.1亿) | 57000ms | 16151ms | 3200ms | 401ms |
相关导航
暂无评论...