來源:北大青鳥總部 2023年08月21日 09:28
互聯(lián)網(wǎng)進(jìn)入下半場,以數(shù)據(jù)資產(chǎn)為核心,數(shù)據(jù)分析做決策變?yōu)樾乱淮ヂ?lián)網(wǎng)特色。在數(shù)據(jù)分析領(lǐng)域,涌現(xiàn)的產(chǎn)品形態(tài)有數(shù)據(jù)中臺、數(shù)據(jù)倉庫、數(shù)據(jù)湖、數(shù)據(jù)集市,涌現(xiàn)的技術(shù)有實(shí)時(shí)計(jì)算、離線計(jì)算。涌現(xiàn)的工具框架有純計(jì)算類HIve/Spark/Presto、存儲框架Kudu、計(jì)算+存儲框架Clickhouse/Druid/Elasticsearch、Hadoop生態(tài)HDFS+YARN+MapReduce。隨著大家對數(shù)據(jù)分析的要求變高,希望耗時(shí)更短,使用更簡單,新的數(shù)據(jù)分析工具也出現(xiàn)了,那就是ApacheKylin.
ApacheKylin是一個(gè)開源的分布式數(shù)據(jù)分析引擎,基于Hadoop提供SQL查詢接口能力、多維數(shù)據(jù)分析能力,支持超大規(guī)模數(shù)據(jù)分析計(jì)算,能夠在亞秒級別內(nèi)查詢超級大的Hive表數(shù)據(jù),由eBay貢獻(xiàn)開源。劃重點(diǎn):開源、亞秒查詢、SQL查詢、分布式,這表明Kylin免費(fèi)、查詢速度快、上手簡單、高可用。我們互聯(lián)網(wǎng)人的新福音又來了,又快又好用還免費(fèi),真的是太好了。
在了解Kylin為什么快之前,我們先看看其它的工具為什么慢?我們以Hadoop家族的Hive來看,Hive它是基于Hadoop的數(shù)據(jù)倉庫工具,可將結(jié)構(gòu)化的數(shù)據(jù)直接轉(zhuǎn)換成數(shù)據(jù)庫表,HIve系統(tǒng)將HQL語句轉(zhuǎn)化成MapReduce進(jìn)行執(zhí)行,本質(zhì)上就是一款基于HDFS的MapReduce計(jì)算框架。所有的數(shù)據(jù)分析任務(wù)都轉(zhuǎn)化成MapReduce任務(wù)進(jìn)行執(zhí)行,當(dāng)數(shù)據(jù)量變成PB、ZB級別時(shí),當(dāng)然就會變得很慢了,所有的數(shù)據(jù)也都存儲在HDFS中,獲取也很慢,業(yè)務(wù)人員在使用Hive時(shí)常常都需要等十幾分鐘或上半個(gè)小時(shí)。
那ApacheKylin到底是什么樣子呢?在Kylin的技術(shù)架構(gòu)中包含四大模塊,即數(shù)據(jù)源、中心處理引擎、存儲引擎、對外接口層,在數(shù)據(jù)源層可直接接收來自Kafka、RDBMS關(guān)系型數(shù)據(jù)庫如Mysql、數(shù)據(jù)倉庫Hive來的數(shù)據(jù),在中心處理引擎層通過Cube構(gòu)建引擎來做數(shù)據(jù)預(yù)聚合,聚合數(shù)據(jù)存儲Hbase,最后支持通過API接口方式直接調(diào)用(對于使用JAVA開發(fā)的服務(wù),也可以通過JDBC直接鏈接Kylin),業(yè)務(wù)人員通過SQL語句直接查詢使用。
那Kylin又是怎么變快的呢?在Kylin的設(shè)計(jì)中,有一個(gè)模塊是Cube引擎,就是它幫助Kylin變快的。我們知道在數(shù)據(jù)分析的時(shí)候,經(jīng)常要獲取多個(gè)維度的數(shù)據(jù),就商品的售賣額來說,在做數(shù)據(jù)分析時(shí),我們會關(guān)注某地區(qū)、某個(gè)時(shí)間點(diǎn)(比如雙十一)、某商品(比如最熱銷商品)等維度的售賣額。這些分析內(nèi)容映射到數(shù)據(jù)倉庫時(shí),分別是事實(shí)表和維度表,事實(shí)表按各個(gè)維度存儲數(shù)據(jù),每個(gè)數(shù)據(jù)的結(jié)果就是度量。數(shù)據(jù)分析就是結(jié)合若干個(gè)維度查看度量值,找到其中變化的規(guī)律。
在Kylin中通過Cube立方體的概念從多維度把數(shù)據(jù)給串聯(lián)起來,接著我們剛剛的例子,因?yàn)橛腥齻€(gè)維度做分析,因此在Kylin中會建立一個(gè)三維的數(shù)據(jù)表(時(shí)間、地區(qū)、品類)。在數(shù)據(jù)分析時(shí)可以拆分到三維、二維、一維,三維包含地區(qū)&品類&時(shí)間,二維包含地區(qū)品類、地區(qū)時(shí)間、品類時(shí)間,一維包含地區(qū)、品類、時(shí)間,每一維度的數(shù)據(jù)都提前聚合號存儲在HBase中了,因此當(dāng)數(shù)據(jù)分析時(shí),直接拿聚合好的數(shù)據(jù),當(dāng)然比一個(gè)個(gè)的去執(zhí)行MapReduce任務(wù)快了。
在計(jì)算層面快了,存儲層面Hbase也是毫不遜色的。Hbase的數(shù)據(jù)存儲實(shí)現(xiàn)方式是先將數(shù)據(jù)存儲在內(nèi)存,當(dāng)內(nèi)存的數(shù)據(jù)量超過限定時(shí)在存儲磁盤,并且在磁盤中存儲的數(shù)據(jù)是有順序的(Hbase利用預(yù)寫日志和內(nèi)存把隨機(jī)寫的數(shù)據(jù)先排序好之后再寫入內(nèi)存)。因此在Hbase查詢數(shù)據(jù)時(shí),會先從內(nèi)存去獲取,內(nèi)存找不到了再去磁盤獲取,在磁盤獲取的時(shí)候又是順序獲取(減少了磁盤尋道時(shí)間),所以當(dāng)然很快了。在計(jì)算和存儲兩個(gè)方向都實(shí)現(xiàn)了加速,因此Kylin變快是毫無疑問的。
不過在使用Kylin時(shí)也需要注意一點(diǎn),那就是Cube的多維度預(yù)聚合,如果聚合的維度比較多,比如有10個(gè)維度,那Kylin聚合出來的維度就會有2的10次方也就是1024多種,在Cube本身的聚合計(jì)算中也會變慢,因此業(yè)務(wù)可以根據(jù)自己需要來選擇聚合的維度。
目前Kylin在數(shù)據(jù)分析領(lǐng)域已經(jīng)火起來了,很多互聯(lián)網(wǎng)公司,如滴滴、美團(tuán)、攜程、京東等都把Kylin融入到了他們的數(shù)據(jù)分析模型當(dāng)中,除此之外,在物聯(lián)網(wǎng)領(lǐng)域,它也正在大放異彩。工欲善其事,必先利其器,想要做好數(shù)據(jù)分析,有一款又快又好用的數(shù)據(jù)分析工具是必備的喔~