《2. Clickhouse玩转每天千亿数据-趣头条.pdf》由会员分享,可在线阅读,更多相关《2. Clickhouse玩转每天千亿数据-趣头条.pdf(14页珍藏版)》请在三个皮匠报告上搜索。
1、ClickhouseClickhouse玩转每天千亿数据玩转每天千亿数据 趣头条趣头条 王海胜王海胜 提纲 业务背景 集群现状 我们遇到的问题 业务背景 基于storm的实时指标的计算存在的问题 1:指标口径(SQL) - 实时任务 2:数据的回溯 3:稳定性 业务背景 什么是我们需要的? 1:实时指标SQL化 2:数据方便回溯,数据有问题,方便恢复 3:运维需要简单 4:计算要快,在一个周期内,要完成所有的指标的计算 集群现状 100+台台32核核128G 部分复杂累时查询30S内完成 集群现状 我们遇到的问题 关于机器的配置关于机器的配置 早期集群机器配置16核64G 一块1.7T本地SS
2、D 问题: 1:内存限制,对于一些大的查询会出现内存不够问题 2:存储限制,随着表越来多,磁盘报警不断 3:cpu限制 64G对于一些大表(每天600亿+)的处理,很容易报错,虽然有基于磁盘解决方案,但是会影响速度 clickhouse的数据目录还不支持多个数据盘,单块盘的大小限制太大 cpu需要根据实际情况而定 解决: 1:机器的内存推荐128G+ 2:采用软连接的方式,把不同的表分布到不同的盘上面,这样一台机器可以挂载更多的盘 最新版本的”冷热数据分离”特性,曲线救国? 我们遇到的问题 order by (timestamp, eventType) or order by (eventTy
3、pe, timestamp) 业务场景 1:趣头条和米读的上报数据是按照”事件类型”(eventType)进行区分 2:指标系统分”分时”和”累时”指标 3:指标的一般都是会按照eventType进行区分 select count(1) from table where dt= and timestamp= and timestamp= and eventType= 建表的时候缺乏深度思考,由于分时指标的特性,我们的表是order by (timestamp, eventType)进行索引 的,这样在计算累时指标的时候出现非常耗时(600亿+数据量) 分析: 对于累时数据,时间索引基本就失效了,由于timestamp”基数”比较高,对于排在第二位eventType索引, 这个时候对数据的过滤就非常有限了,这个时候几乎就要对当天的数据进行全部扫描 解决: 1:调整索引的顺序,推荐索引列的基数