作者:庾承泓_689 | 来源:互联网 | 2023-09-05 18:02
备注:本文是2018-06在链家的时候做的对外分享,现在纯搬运到知乎引言:海量数据背景下,业界普遍引入hadoophive等来解决大数据计算分析的需求,但随着大家对计算速度和灵活性
备注:本文是2018-06在链家的时候做的对外分享,现在纯搬运到知乎
引言:
海量数据背景下,业界普遍引入hadoop/hive等来解决大数据计算分析的需求,但随着大家对计算速度和灵活性的要求提高,业内涌现出各类引擎impala,sparksql,kylin等,贝壳根据自身业务需求,主要针对灵活查询,快速查询,实时查询分别选型spark sql,kylin,druid, 本次主要分享贝壳对这些引擎的实践,优化,及二次开发经验
关于我:
•13年 浙大软件工程毕业
•13-14年 百度商业平台部-风控平台研发
•15年至今 贝壳(原链家网)大数据集群及基础引擎建设
•专注于hadoop,hbase,kylin等生态组件,热爱开源,为社区贡献多个patch
•丰富的性能调优经验
目录:
•早期架构1.0
•OLAP简介
•快速可视化查询-指标平台(kylin)
•Adhoc灵活查询-Queryengine(spark sql+alluxio)
•Q&A
早期架构:
•架构简单、just works
•需求驱动、case by base解决问题。
•固化Mysql难以存储大数据量
•查询原始hive速度慢、使用成本高
•实时数据分析无解
OLAP引擎分类:
•ROLAP(Relational OLAP)
– 基于关系模型,实时进行聚合计算
– 实现:传统数据库引擎/spark sql/presto
•MOLAP(Multi-dimension OLAP)
– 基于预定义模型,预先进行聚合计算,存储汇总结果
– 实现:Kylin/Druid
•HOLAP(Hybrid OLAP)
– 混合多引擎,不同场景路由到不同引擎
ROLAP:
•优势
– 支持任意的sql查询
– 无数据冗余,一致性好
•缺点
– 大数据量及复杂查询返回慢
– 并发较差
•场景
– 灵活性很高的分析
MOLAP:
•优势
– 支持超大原始数据集
– 快速返回,并发高
•缺点
– 不支持明细
– 需要预先定义维度和指标
•场景
– 能预知查询模式,并发有要求的场景
可视化(快速查询)选型:
KYLIN简介:
Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
MOLAP解决方案
预先定义维度和指标
预计算cube,存储到hbase中
查询时解析sql路由到hbase中获取结果
KYLIN架构:
Cube和Cuboid:
Kylin存储模型:
贝壳olap平台架构:
自研kylin中间件:
贝壳kylin的使用统计:
•定位:离线OLAP引擎
•800+ cube,覆盖公司16个业务线
•Cube存储总量200T+, 数据行数1600+亿行,单cube最大60+亿行
•日查询量100万+,时延<500ms(95%), <1s(99%)
ADHOC篇:
Alluxio使用经验:
•原生多层级置换有性能问题(代码里是单线程执行),建议单层
•不要超过缓存大小,避免大量miss
•性能优先:单层MEM或单层SSD,HDFS减负:单层HDD
•可在metastore层,进行路由(不走alluxio, 走ssd,走hdd)
•元数据缓存一致性问题
-checkConsistency
-alluxio.user.file.metadata.sync.interval