Clickhouse 介绍

介绍

ClickHouse 是俄罗斯的 Yandex(相当于Google) 于 2016 年开源的用于 在线分析处理查询(OLAP )MPP架构 的 列式存储数据库,能够使用 SQL 查询实时生成分析数据报告。

ClickHouse的全称是Click Stream,Data WareHouse。

clickhouse没有走hadoop生态,采用 Local attached storage 作为存储

为什么使用 Clickhouse

目前企业用户行为日志每天百亿量级,虽然经过数仓的分层以及数据汇总层通用维度指标的预计算,但有些个性化的分析场景还是需要直接编写程序或sql查询,这种情况下hive sql和spark sql的查询性能已无法满足用户需求,迫切的需要一个OLAP引擎来支持快速的 即席查询。

国内大厂使用情况

  • 今日头条:内部用ClickHouse来做用户行为分析,内部一共几千个ClickHouse节点,单集群最大1200节点,总数据量几十PB,日增原始数据300TB左右。

  • 腾讯:用ClickHouse做游戏数据分析,并且为之建立了一整套监控运维体系。

  • 携程:从18年7月份开始接入试用,目前80%的业务都跑在ClickHouse上。每天数据增量十多亿,近百万次查询请求。

  • 快手:使用ClickHouse,存储总量大约10PB, 每天新增200TB, 90%查询小于3S。

特点

列式存储

好处参见 链接

DBMS功能

几乎覆盖了标准 SQL 的大部分语法,包括 DDL 和 DML、,以及配套的各种函数;用户管理及权限管理、数据的备份与恢复

多样化引擎

目前包括合并树、日志、接口和其他四大类20多种引擎。

高吞吐写入能力

ClickHouse采用类 LSM Tree 的结构,数据写入后定期在后台Compaction。通过类 LSM tree的结构, ClickHouse在数据导入时全部是顺序append写,写入后数据段不可更改,在后台compaction时也是多个段merge sort后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力。

数据分区与线程及并行

ClickHouse将数据 划分为多个partition,每个partition再进一步划分为多个index granularity(索引粒度),然后通过多个CPU核心分别处理其中的一部分来实现并行数据处理。在这种设计下, 单条 Query 就能利用整机所有 CPU。 极致的并行处理能力,极大的降低了查询延时。

所以, ClickHouse 即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多cpu,就不利于同时并发多条查询。所以对于高 qps 的查询业务并不是强项。

缺点

  • 不支持事务,目的是OLAP,支持事务会影响性能
  • 不支持删除、更新
  • 不适用高并发场景

应用场景

使用场景

  1. 用户行为分析系统。行为分析系统的表可以打成一个大的宽表形式,join 的形式相对少一点,可以实现路径分析、漏斗分析、路径转化等功能

  2. BI报表。结合clickhouse的实时查询功能,可以实时的做一些需要及时产出的灵活BI报表需求,包括并成功应用于留存分析、用户增长、广告营销等

  3. 监控系统。视频播放质量、CDN质量,系统服务报错信息等指标,也可以接入ClickHouse,结合Kibana实现监控大盘功能

  4. 特征分析。使用Clickhouse针对大数据量的数据进行聚合计算来提取特征

  5. 最大的应用来自于Yandex的统计分析服务Yandex.Metrica,类似于谷歌Analytics(GA),或友盟统计,小米统计,帮助网站或移动应用进行数据分析和精细化运营工具,据称Yandex.Metrica为世界上第二大的网站分析平台。ClickHouse在这个应用中,部署了近四百台机器,每天支持200亿的事件和历史总记录超过13万亿条记录,这些记录都存有原始数据(非聚合数据),随时可以使用SQL查询和分析,生成用户报告。

与 hadoop 生态合作

  • 实时:数据流可以通过kafka或者flink实时处理之后,将结果通过JDBC方式导入到ClickHouse中
  • 离线:数据落地HDFS ODS层,通过Spark或MR处理后,将结果批量导入到ClickHouse中

引用:
https://zhuanlan.zhihu.com/p/117326011
https://zhuanlan.zhihu.com/p/358821358
https://zhuanlan.zhihu.com/p/98135840


原文出处:/show_1IX3ODtVtgq7.html