酷家樂是群核科技旗下知名業務品牌,專注云設計系統及三維內容制作的技術研發和應用,面向家居、房產、公裝等全空間領域,為企業級客戶提供設計渲染、營銷展示、生產施工、幾何建模等場景的解決方案和服務。 酷家樂大數據技術團隊負責酷家樂大數據體系框架的建設,支撐日常BI運營分析、商業化數據產品、在線大小數據業務、人群畫像等場景。生產環境上使用DorisDB集群10 x物理機替換了原有阿里云ADB集群和EMR Presto集群,在使用部分集群資源前提下,查詢性能即可與ADB持平,Presto P95的查詢從秒級提升到500ms級別。在完成同等分析任務情況下,DorisDB性價比是同類產品的兩倍以上。 DorisDB一套集群統一了實時和離線的分析場景,替換了多套系統帶來的系統復雜性,簡化了數據ETL流程,同時大幅提升Adhoc場景查詢效率。 本文主要側重于酷家樂大數據團隊基于新一代極速MPP分析型數據庫DorisDB,在數據服務體系和數據應用場景中的實踐和探索。 作者:弋舟大數據技術專家,酷家樂大數據團隊負責人,坐標杭州 數據引擎現狀 隨著業務規模越來越大,數據規模和體量也急劇膨脹。企業的原始數據通常來源于日志埋點文件、業務數據庫、三方接口等。企業通常基于CDH/Hadoop等大數據分布式計算框架和數據集成工具,構建離線的數據倉庫,并對數據進行適當的分層、建模、加工和管理。 但上層數據應用對查詢的數據存儲、時效性要求高,數據最終會通過數據同步工具回流到MySQL、ElasticSearch、Presto、HBase等關系型數據庫/MPP數據庫中。 酷家樂大數據體系沉淀了諸多主題數據,例如:C端用戶行為流量數據,B端用戶賬號等使用數據,行業報告相關的數據等。 由于數據膨脹,尤其是酷家樂設計工具使用場景下產生的模型/方案/渲染使用明細數據,離線實時計算任務需要對TB級別的數據進行調度、聚合、計算,在數倉里沉淀出大量明細表、聚合表和最終的數據報表。 數據服務層的愿景是開放數倉能力,建立統一的數據服務出口,針對不同的查數場景數據規模、QPS、UDF支持、運維成本等,在底層引擎上的選型: ·大數據量、低QPS:使用Hive+Presto等基于Hadoop生態的離線批任務計算框架和MPP數據庫來解決。 ·小數據量、高QPS:使用MySQL、ElasticSearch、HBase、MongoDB等關系型/非關系型TP數據庫來解決。 在目前的數據架構下,我們遇到如下問題和挑戰: ·離線/實時ETL任務過多,處理邏輯大部分為簡單聚合/去重,導致聚合表數量龐大,導致運營和運維上的成本增加; ·針對中等數據量、中等QPS的查詢場景,如何能兼顧數據規模的同時,有較友好的查詢的耗時響應,耗時小于200ms; ·大數據量下插入、更新的實時數據場景的支持,例如:用戶畫像、實時DMP、用戶路徑、監控數據大盤等。 新引擎的引入 針對如上的問題和挑戰,我們的目標是尋求盡可能少的ROLAP引擎,利用在明細表上現場計算來解決ETL任務、數倉表過多問題,同時需要兼顧在數據規模、查詢QPS、響應耗時、查詢場景方面的權衡。 目前市面上ROLAP引擎百花齊放,諸如Impala、Druid、ClickHouse、DorisDB。經過一番調研,我們最終選擇了DorisDB。DorisDB是基于MPP架構的分析型數據庫,自帶數據存儲,整合了大數據框架的優勢,支持主鍵更新、支持現代化物化視圖、支持高并發和高吞吐的即席查詢等諸多優點,天然能解決我們上述的問題。 應用實踐 DorisDB上生產環境主要作為離線/實時數據的ROLAP數據庫使用。離線數據主要存儲于ODPS,通過DataX任務批量同步數據,實時數據主要存儲于Kafka中,基于Kafka的流式處理任務寫入。DataX任務和Flink任務統一寫Doris Proxy服務,由代理控制器通過HTTP Stream Load的方式控制數據寫入周期和批次大小。基于DorisDB重構原有分析平臺對數倉內現有存在痛點數據業務進行梳理: ·每日的數據增量在上億規模的超大明細表,需要統計日、周、月、季、年等統計數據; ·商家賬號使用、模型使用、方案渲染在任意日期區間的聚合值、累計值、去重值。 這些需求在前端查詢,都需要保證低延遲。在沒有引入DorisDB之前,我們使用的底層引擎是MySQL或者Presto on HDFS存儲存明細表/聚合表進行查詢。MySQL處理上億規模的數據,無論使用分庫分表、分區表、集群化部署的PolarDB方案,都會存在慢查詢、數據庫扛不住、運維困難的窘境;Presto on HDFS的方案更偏向于分析型數據業務,雖然能存儲海量的數據,計算能力不錯,唯一致命的在于無法滿足在線業務的高吞吐QPS,查詢比較難做到毫秒級。引入DorisDB帶來的業務效果如下: ·支撐了在線數據查詢+數據分析業務,服務于對內運營+對外商業化數據產品,在線業務查詢P95耗時在毫秒級別,分析型業務查詢P95耗時在秒級別; ·支持10億規模的明細表查詢,月、季、年度統計數據現場算聚合統計、去重,查詢耗時能控制在500ms; ·千萬級別的多表的join和union查詢,經過Colocate Join特性優化,查詢響應在秒級。 實時鏈路的探索 在探索實時數據鏈路方案時候,我們主要考慮到了DorisDB的如下優勢: ·實時寫入性能:目前DorisDB支持HTTP Stream Load自定義的分鐘級別微批寫入和Kafka To DorisDB的秒級延遲,完全能滿足T+m實時數據業務; ·統一離線和實時分析:實時數據和離線數據更好的在DorisDB中進行融合,靈活支撐應用,數據存儲策略通過DorisDB動態分區的功能進行清理; ·SQL Online Serving:高效的SQL即席查詢能力,能夠兼容業界流行的SQL規范,支撐業務靈活復雜的訪問,提高取數開發的效率。 總結和規劃 酷家樂大數據團隊引入DorisDB生產集群,解決了數據服務層單表億級別規模、高QPS數據場景下引擎的空白,直接開放明細表準實時查詢的能力,給上層數據業務和BI系統提供了更多的選擇和自由度,同時將大大減少數倉中大量ETL任務、聚合表、報表,降低了數倉ETL的運維壓力和維護成本。未來的我們在DorisDB的應用和實踐上還有不少規劃: ·除了unique和duplicate數據模型,未來會將符合的數據場景遷移至aggregation模型和物化視圖表,進一步降低數倉開發維護成本,降低查詢延遲; ·DorisDB on ES的功能值得我們深挖和探索,解決了原生ES集群無法支持跨索引join的能力; ·更多數據應用層的場景接入DorisDB,例如人群更新、用戶畫像服務、用戶行為路徑分析等,將進一步拓展DorisDB在實時數據寫入、批量數據更新場景中的應用; ·和酷家樂數據集成平臺、數倉平臺深度打通,完善監控體,作為大數據團隊的基礎設施去保障穩定性和服務; ·考慮使用多云架構,自主可控的數倉架構可以靈活的在多云間切換遷移,降低單一來云廠商的依賴,控制成本提高可用性。 ·...... |