- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
ClickHouse高性能分布式分析数据库
展开查看详情
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