展开查看详情
1.基于Druid的Kylin存储引擎实践
美团点评
康凯森
2.⼤纲
• Kylin On HBase 问题
• Kylin 新存储引擎探索
•Kylin On Druid
3.Kylin 服务现状
973 Cube 380万 次查询/天
数据量 Cube存储 TP 50 TP 90
8.9万亿 971TB 200ms 1.2s
覆盖所有主要业务线
4.Kylin On HBase 问题
• 同⼀SQL
• 同⼀Cube
• 同⼀集群
唯⼀不同点:Kylin维度在HBase的Rowkey中位置不同
5. Kylin On HBase 问题
• 每次读取所有指标列:
Scan性能相⽐列存
相差10倍多
• 单⼀Rowkey索引:
前缀和后缀Filter
性能相差上千倍
6.Kylin On HBase 问题的可能解
• 列存:更⾼效的Scan
• 索引:更⾼效的Filter
7.列存的优点
• ⾼效IO:只读取必需的列
• ⾼效编码和压缩:每列数据类型⼀致,格式⼀致
• 向量化执⾏
8. 问题如何解:
⼀个更⾼效的存储引擎
9.Kylin 存储引擎模块
10.Kylin 新存储引擎思路⼀
基于Spark + File演进
11.Kylin 新存储引擎思路⼆
基于File Format演进新存储引擎
12. 第⼀步
探索⼀个适合Kylin的存储格式
13.Kylin 存储格式评测标准
14.Parquet File Format 2.3.1
• 列存
• Min,Max索引
• Dictionary 过滤
• ⽆ PageIndex
15.Kylin On Parquet POC
• 构建:单节点每分钟导⼊百万条数据
• 压缩:存储空间⽐HBase节省10%
• Scan 查询:部分列时是HBase的2~6倍;全部列时是HBase的80%
• Filter 查询:前缀查询明显不如HBase,后缀查询有⼀定优势
16.CarbonData File Format 1.0
• 列存
• MDK索引
• Min,Max索引
• 倒排索引
17.Why Not Kylin On Carbondata 1.0
• 没有OutputFormat
• 和 Spark 耦合较深
• 尚不成熟(2017-05)
18.Lucene 7.0
• 列存
• 倒排索引
• MMap
19.Kylin On Lucene POC
• 构建:导⼊速度是HBase的1/3
• 压缩:存储是HBase的4倍
• Scan查询:部分列时性能优于HBase
• Filter查询:过滤性能明显优于HBase, 不过点查询性能⽐HBase差
20.Druid Segment File Format
• 列式存储
• Bitmap倒排索引
• MMap
21.Druid Bitmap 倒排索引
22.Kylin On Druid POC
前缀过滤
后缀过滤
23.Why Kylin On Druid
• Parquet: 索引粒度较粗,Filter 性能不⾜
•CarbonData: 与Spark耦合较深,集成难度⼤
• Lucene: 存储膨胀率较⾼
24.Why Kylin On Druid
• Scan Filter 性能
• 开发效率
• 风险可控
25.⼤纲
• Kylin On HBase 问题
• Kylin 新存储引擎探索
•Kylin On Druid
26.Kylin 可插拔架构
27.How KOD:KOD架构
28.How KOD:Data Load
29.How KOD:Data Query