ClickHouse高性能分布式分析数据库

介绍ClickHouse的基本特性和概念,特别是性能对比数据,包括和Hive/Spark/Druid的性能对比。
展开查看详情

1.高性能分布式分析数据库 欧阳辰 品友互动 2017.8.5

2.内容提要 • 我是谁? • 什么ClickHouse • 技术特点和使用场景 • 到底有多快? • 为什么这么快? • 品友的小实践

3. 欧阳辰 我是谁? >17年的软件研发老兵 2.5年 新征程 10年 3年 广告平台,大数据 7年 www.ouyangchen.com

4. (类百度统计 or Google Analytics) 200+亿事件/天,100K+ 分析查询/天,数百万网站 数据量:

5. 2017.7 • 超过20+项目in Yandex • Open-source from June 2016 • Production outside Yandex

6.实时大数据分析的特点 传统数据库 实时大数据库分析 • 很多表 • 更少的表 • 主键连接 • 更多的列 • 复杂SQL查询 • 事件 -> 属性 例如,销售数据,管理行为等 例如,用户行为,服务器日志,IOT,用户画像

7.大数据分析的CAP 例如:  Druid: A,P 性能 (Performance)  Vertica: C,P  Presto: C 能力 成本 (Capacity) (Affordable)  ClickHouse: P, C, A?

8.ClickHouse的技术特性和不完美 ClickHouse的不完美: 1.不支持Transaction, OLTP 2.聚合结果必须小于一台机器的内存大小 3.缺少完整的Update/Delete操作 4.不适合典型的Key-Value存储 5.不支持Blob/Document类型数据 6.仅仅支持Ubuntu OS,其他用Docker Event-oriented RDBMS

9.谁在用ClickHouse? 适合的场景 谁在用ClickHouse • Yandex.Metrica :Web Event Analystics • 日志分析,数据量大,PB级 • CERN( European Organization for Nuclear • 复杂的随机查询,例如SQL Research) • LifeStreet • 数据不需要进行更改 • Cloudflare (HTTP Logs Analysis) • 非交易(Transaction)数据 • 品友互动 : User Behavior Analysis • 评估阶段:腾讯,阿里, OneAPM,等等

10.Yandex.Metrica的设计理念和部署 设计目标 部署情况 • 快速为王 • 3 PB数据 • 实时数据 • 412 节点 • 支持PB级别数据 • 6 数据中心 • 多个数据中心容错 • <几个小时宕机in 4 years • 查询语言灵活 聚焦在快速查询!

11.ClickHouse/Metrica发展简史 • 第一阶段MYISAM (LSM-Tree) (2008-2011) • 阶段二: Metrage (从2010-现在/End) • 阶段三: OLAPServer (2009-2013) • 第四阶段:ClickHouse(2011-现在)

12.阶段一:MyISAM V.S InnoDB 数据在磁盘存放的分布

13.阶段二:Metrage 技术特点 部署情况 • 数据通过小批量Batch存储 • 39*2台服务器 • 支持高强度的写操作 • 3万亿行 • 读数据量非常小 • 数据被压缩成块(LZ4,QuickLZ) • 1千亿事件/天 • 采用稀疏索引

14.阶段三:OLAPServer(2009-2013) 技术特点 部署情况 • 支持维度和指标(Metrics) • 7280亿行数据 • 列值的基数不能太大 • 大部分查询小于50毫秒 • 列式存储,高压缩 • 使用VectorWise方法(SIMD) • 只支持1-8字节数据类型 • 不支持URL类型

15.阶段4:ClickHouse(2009-2016(开源)-now) 设计背景 部署情况 • 基数大的列,聚合意义不大,例如URL等 • 2015年,12月 • 超过11万亿行,数据表有200列 • 过多维度组合会导致组合爆炸 • 机器从60台增长到400台 • 用户常常只关心聚合后的数据中的非常一 • 性能远超Vertica 一小部分数据,因此大量聚合预计算是得 不偿失的。 • 聚合后的数据,数据修改会非常困难,很 难保证存储的逻辑完整性

16.ClickHouse到底有多块? 官方测试数据

17.ClickHouse 到底有多快?例子1 订单表 节点硬件: CPU: 24 cores E5-2643 v2 @ 3.50GHz 存储:PCIe Flash storage 数据大小: • 订单表:150亿行 客户表 • 客户表:7500万行 导入数据库后,订单表存储大小为464GB,(压缩率3X)

18.ClickHouse 到底有多快?例子1-Continued 1个节点 3个节点 时间(s) 9.7 3.2 1个节点 3个节点 时间 3.1 1.29 1个节点 3个节点 时间 28.9 14.1 1个节点 3个节点 时间 31.4 25.1 • 订单表:150亿行,客户表:7500万行

19.ClickHouse 到底有多快?ClickHouse V.S Spark SQL Wikipedia Page Counts 200亿行

20. ClickHouse 到底有多快?品友互动 部署: 数据表: • 数据量 30亿+, 多维,Ad-hoc查询 • 内存128G/CPU24核/CentOS7.1 • 软件:ClickHouse 1.1 • Distributed ENGINE • 配置 3 Shards,1 replica • 采用SAMPLE Sample

21.ClickHouse 到底有多快?品友互动 2 部署: 数据表(小表): • 数据量 5000万+, 多维,Ad-hoc查询 • 内存128G/CPU24核/CentOS7.1 • 软件:ClickHouse 1.1 • Distributed ENGINE • 配置 3 Shards,1 replicas

22.ClickHouse 到底有多快 V.S Druid?品友互动 3. 部署: 数据表(小表): • 数据量比较大,单日5亿数据,多维 •Druid 0.10.0, Hadoop 2.7,Hive 2.3 • 按小时聚合 •离线任务加载数据、将hive与druid整合后通过 • 数据量 30亿+ jdbc方式查询 •2 Historical+2Broker

23.ClickHouse为什么这么快? 性能为王的原则,每一个改动都需要经过性能测试。 • Vectorized Query Execution技术 • 利用CPU的SIMD (Single Instruction Multiple Data) • 来自VectorWise公司(Actian now!) • 参考“Vectorization vs. Compilation in Query Execution” • Runtime Code Generation技术 • Java JIT/Reflection; C++ LLVM; • C++ 14特性 • TCMalloc类似技术

24.ClickHouse的一些技术能力 接口支持 性能之外特点 • 命令行客户端 • 数据压缩能力,对于PB级别数据, • HTTP 非常有意义 • JDBC接口 • Python • 实时数据摄入能力 • PHP • NodeJS • 支持模糊计算(approximated • Go calculations) • Perl wrappers • 异步多Master备份

25.非常活跃社区

26.Click House 开发规划

27.参考资料 • https://clickhouse.yandex/ • https://www.percona.com/blog/2017/07/06/clickhouse-one-year/ • https://aferdyp.github.io/clickhouse/2017/02/23/building- clickHouse.html

28.谢谢! www.ouyangchen.com