備註:本文是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


推薦閱讀:
相关文章