酷家樂(lè)大數(shù)據(jù)體系沉淀了諸多主題數(shù)據(jù),例如:C端用戶行為流量數(shù)據(jù),B端用戶賬號(hào)等使用數(shù)據(jù),行業(yè)報(bào)告相關(guān)的數(shù)據(jù)等。

由于數(shù)據(jù)膨脹,尤其是酷家樂(lè)設(shè)計(jì)工具使用場(chǎng)景下產(chǎn)生的模型/方案/渲染使用明細(xì)數(shù)據(jù),離線實(shí)時(shí)計(jì)算任務(wù)需要對(duì)TB級(jí)別的數(shù)據(jù)進(jìn)行調(diào)度、聚合、計(jì)算,在數(shù)倉(cāng)里沉淀出大量明細(xì)表、聚合表和最終的數(shù)據(jù)報(bào)表。

數(shù)據(jù)服務(wù)層的愿景是開放數(shù)倉(cāng)能力,建立統(tǒng)一的數(shù)據(jù)服務(wù)出口,針對(duì)不同的查數(shù)場(chǎng)景(數(shù)據(jù)規(guī)模、QPS、UDF支持、運(yùn)維成本等),在底層引擎上的選型:

·大數(shù)據(jù)量、低QPS:使用Hive+Presto等基于Hadoop生態(tài)的離線批任務(wù)計(jì)算框架和MPP數(shù)據(jù)庫(kù)來(lái)解決。

·小數(shù)據(jù)量、高QPS:使用MySQL、ElasticSearch、HBase、MongoDB等關(guān)系型/非關(guān)系型TP數(shù)據(jù)庫(kù)來(lái)解決。

在目前的數(shù)據(jù)架構(gòu)下,我們遇到如下問(wèn)題和挑戰(zhàn):

·離線/實(shí)時(shí)ETL任務(wù)過(guò)多,處理邏輯大部分為簡(jiǎn)單聚合/去重,導(dǎo)致聚合表數(shù)量龐大,導(dǎo)致運(yùn)營(yíng)和運(yùn)維上的成本增加;

·針對(duì)中等數(shù)據(jù)量、中等QPS的查詢場(chǎng)景,如何能兼顧數(shù)據(jù)規(guī)模的同時(shí),有較友好的查詢的耗時(shí)響應(yīng),耗時(shí)小于200ms;

·大數(shù)據(jù)量下插入、更新的實(shí)時(shí)數(shù)據(jù)場(chǎng)景的支持,例如:用戶畫像、實(shí)時(shí)DMP、用戶路徑、監(jiān)控?cái)?shù)據(jù)大盤等。

新引擎的引入

針對(duì)如上的問(wèn)題和挑戰(zhàn),我們的目標(biāo)是尋求盡可能少的ROLAP引擎,利用在明細(xì)表上現(xiàn)場(chǎng)計(jì)算來(lái)解決ETL任務(wù)、數(shù)倉(cāng)表過(guò)多問(wèn)題,同時(shí)需要兼顧在數(shù)據(jù)規(guī)模、查詢QPS、響應(yīng)耗時(shí)、查詢場(chǎng)景方面的權(quán)衡。

目前市面上ROLAP引擎百花齊放,諸如Impala、Druid、ClickHouse、DorisDB。經(jīng)過(guò)一番調(diào)研,我們最終選擇了DorisDB。DorisDB是基于MPP架構(gòu)的分析型數(shù)據(jù)庫(kù),自帶數(shù)據(jù)存儲(chǔ),整合了大數(shù)據(jù)框架的優(yōu)勢(shì),支持主鍵更新、支持現(xiàn)代化物化視圖、支持高并發(fā)和高吞吐的即席查詢等諸多優(yōu)點(diǎn),天然能解決我們上述的問(wèn)題。

應(yīng)用實(shí)踐

DorisDB上生產(chǎn)環(huán)境主要作為離線/實(shí)時(shí)數(shù)據(jù)的ROLAP數(shù)據(jù)庫(kù)使用。離線數(shù)據(jù)主要存儲(chǔ)于ODPS,通過(guò)DataX任務(wù)批量同步數(shù)據(jù),實(shí)時(shí)數(shù)據(jù)主要存儲(chǔ)于Kafka中,基于Kafka的流式處理任務(wù)寫入。DataX任務(wù)和Flink任務(wù)統(tǒng)一寫Doris Proxy服務(wù),由代理控制器通過(guò)HTTP Stream Load的方式控制數(shù)據(jù)寫入周期和批次大小?;贒orisDB重構(gòu)原有分析平臺(tái)對(duì)數(shù)倉(cāng)內(nèi)現(xiàn)有存在痛點(diǎn)數(shù)據(jù)業(yè)務(wù)進(jìn)行梳理:

·每日的數(shù)據(jù)增量在上億規(guī)模的超大明細(xì)表,需要統(tǒng)計(jì)日、周、月、季、年等統(tǒng)計(jì)數(shù)據(jù);

·商家賬號(hào)使用、模型使用、方案渲染在任意日期區(qū)間的聚合值、累計(jì)值、去重值。

這些需求在前端查詢,都需要保證低延遲。在沒(méi)有引入DorisDB之前,我們使用的底層引擎是MySQL或者Presto on HDFS存儲(chǔ)存明細(xì)表/聚合表進(jìn)行查詢。MySQL處理上億規(guī)模的數(shù)據(jù),無(wú)論使用分庫(kù)分表、分區(qū)表、集群化部署的PolarDB方案,都會(huì)存在慢查詢、數(shù)據(jù)庫(kù)扛不住、運(yùn)維困難的窘境;Presto on HDFS的方案更偏向于分析型數(shù)據(jù)業(yè)務(wù),雖然能存儲(chǔ)海量的數(shù)據(jù),計(jì)算能力不錯(cuò),唯一致命的在于無(wú)法滿足在線業(yè)務(wù)的高吞吐QPS,查詢比較難做到毫秒級(jí)。引入DorisDB帶來(lái)的業(yè)務(wù)效果如下:

·支撐了在線數(shù)據(jù)查詢+數(shù)據(jù)分析業(yè)務(wù),服務(wù)于對(duì)內(nèi)運(yùn)營(yíng)+對(duì)外商業(yè)化數(shù)據(jù)產(chǎn)品,在線業(yè)務(wù)查詢P95耗時(shí)在毫秒級(jí)別,分析型業(yè)務(wù)查詢P95耗時(shí)在秒級(jí)別;

·支持10億規(guī)模的明細(xì)表查詢,月、季、年度統(tǒng)計(jì)數(shù)據(jù)現(xiàn)場(chǎng)算聚合統(tǒng)計(jì)、去重,查詢耗時(shí)能控制在500ms;

·千萬(wàn)級(jí)別的多表的join和union查詢,經(jīng)過(guò)Colocate Join特性優(yōu)化,查詢響應(yīng)在秒級(jí)。

實(shí)時(shí)鏈路的探索

在探索實(shí)時(shí)數(shù)據(jù)鏈路方案時(shí)候,我們主要考慮到了DorisDB的如下優(yōu)勢(shì):

·實(shí)時(shí)寫入性能:目前DorisDB支持HTTP Stream Load自定義的分鐘級(jí)別微批寫入和Kafka To DorisDB的秒級(jí)延遲,完全能滿足T+m實(shí)時(shí)數(shù)據(jù)業(yè)務(wù);

·統(tǒng)一離線和實(shí)時(shí)分析:實(shí)時(shí)數(shù)據(jù)和離線數(shù)據(jù)更好的在DorisDB中進(jìn)行融合,靈活支撐應(yīng)用,數(shù)據(jù)存儲(chǔ)策略通過(guò)DorisDB動(dòng)態(tài)分區(qū)的功能進(jìn)行清理;

·SQL Online Serving:高效的SQL即席查詢能力,能夠兼容業(yè)界流行的SQL規(guī)范,支撐業(yè)務(wù)靈活復(fù)雜的訪問(wèn),提高取數(shù)開發(fā)的效率。

總結(jié)和規(guī)劃

酷家樂(lè)大數(shù)據(jù)團(tuán)隊(duì)引入DorisDB生產(chǎn)集群,解決了數(shù)據(jù)服務(wù)層單表億級(jí)別規(guī)模、高QPS數(shù)據(jù)場(chǎng)景下引擎的空白,直接開放明細(xì)表準(zhǔn)實(shí)時(shí)查詢的能力,給上層數(shù)據(jù)業(yè)務(wù)和BI系統(tǒng)提供了更多的選擇和自由度,同時(shí)將大大減少數(shù)倉(cāng)中大量ETL任務(wù)、聚合表、報(bào)表,降低了數(shù)倉(cāng)ETL的運(yùn)維壓力和維護(hù)成本。未來(lái)的我們?cè)贒orisDB的應(yīng)用和實(shí)踐上還有不少規(guī)劃:

·除了unique和duplicate數(shù)據(jù)模型,未來(lái)會(huì)將符合的數(shù)據(jù)場(chǎng)景遷移至aggregation模型和物化視圖表,進(jìn)一步降低數(shù)倉(cāng)開發(fā)維護(hù)成本,降低查詢延遲;

·DorisDB on ES的功能值得我們深挖和探索,解決了原生ES集群無(wú)法支持跨索引join的能力;

·更多數(shù)據(jù)應(yīng)用層的場(chǎng)景接入DorisDB,例如人群更新、用戶畫像服務(wù)、用戶行為路徑分析等,將進(jìn)一步拓展DorisDB在實(shí)時(shí)數(shù)據(jù)寫入、批量數(shù)據(jù)更新場(chǎng)景中的應(yīng)用;

·和酷家樂(lè)數(shù)據(jù)集成平臺(tái)、數(shù)倉(cāng)平臺(tái)深度打通,完善監(jiān)控體,作為大數(shù)據(jù)團(tuán)隊(duì)的基礎(chǔ)設(shè)施去保障穩(wěn)定性和服務(wù);

·考慮使用多云架構(gòu),自主可控的數(shù)倉(cāng)架構(gòu)可以靈活的在多云間切換遷移,降低單一來(lái)云廠商的依賴,控制成本提高可用性。

·……

來(lái)源:中國(guó)資訊報(bào)道網(wǎng)

分享到

zhangnn

相關(guān)推薦