<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實時數(shù)倉項目架構分層

          共 3897字,需瀏覽 8分鐘

           ·

          2022-04-09 21:07

          一、滴滴實時數(shù)倉項目


          在公司內部,我們數(shù)據(jù)團隊有幸與順風車業(yè)務線深入合作,在滿足業(yè)務方實時數(shù)據(jù)需求的同時,不斷完善實時數(shù)倉內容,通過多次迭代,基本滿足了順風車業(yè)務方在實時側的各類業(yè)務需求,初步建立起順風車實時數(shù)倉,完成了整體數(shù)據(jù)分層,包含明細數(shù)據(jù)和匯總數(shù)據(jù),統(tǒng)一了DWD層,降低了大數(shù)據(jù)資源消耗,提高了數(shù)據(jù)復用性,可對外輸出豐富的數(shù)據(jù)服務。

          數(shù)倉具體架構如下圖所示:

          從數(shù)據(jù)架構圖來看,順風車實時數(shù)倉和對應的離線數(shù)倉有很多類似的地方。例如分層結構;比如ODS層,明細層,匯總層,乃至應用層,他們命名的模式可能都是一樣的。但仔細比較不難發(fā)現(xiàn),兩者有很多區(qū)別:

          • 與離線數(shù)倉相比,實時數(shù)倉的層次更少一些

          • 從目前建設離線數(shù)倉的經驗來看,數(shù)倉的數(shù)據(jù)明細層內容會非常豐富,處理明細數(shù)據(jù)外一般還會包含輕度匯總層的概念,另外離線數(shù)倉中應用層數(shù)據(jù)在數(shù)倉內部,但實時數(shù)倉中,app應用層數(shù)據(jù)已經落入應用系統(tǒng)的存儲介質中,可以把該層與數(shù)倉的表分離。

          • 應用層少建設的好處:實時處理數(shù)據(jù)的時候,每建一個層次,數(shù)據(jù)必然會產生一定的延遲。

          • 匯總層少建的好處:在匯總統(tǒng)計的時候,往往為了容忍一部分數(shù)據(jù)的延遲,可能會人為的制造一些延遲來保證數(shù)據(jù)的準確。舉例,在統(tǒng)計跨天相關的訂單事件中的數(shù)據(jù)時,可能會等到 00:00:05 或者 00:00:10再統(tǒng)計,確保 00:00 前的數(shù)據(jù)已經全部接受到位了,再進行統(tǒng)計。所以,匯總層的層次太多的話,就會更大的加重人為造成的數(shù)據(jù)延遲。* 與離線數(shù)倉相比,實時數(shù)倉的數(shù)據(jù)源存儲不同

          • 在建設離線數(shù)倉的時候,目前滴滴內部整個離線數(shù)倉都是建立在 Hive 表之上。但是,在建設實時數(shù)倉的時候,同一份表,會使用不同的方式進行存儲。比如常見的情況下,明細數(shù)據(jù)或者匯總數(shù)據(jù)都會存在 Kafka 里面,但是像城市、渠道等維度信息需要借助Hbase,mysql或者其他KV存儲等數(shù)據(jù)庫來進行存儲。?接下來,根據(jù)順風車實時數(shù)倉架構圖,對每一層建設做具體展開:

          2.1?ODS 貼源層建設

          根據(jù)順風車具體場景,目前順風車數(shù)據(jù)源主要包括訂單相關的binlog日志,冒泡和安全相關的public日志,流量相關的埋點日志等。這些數(shù)據(jù)部分已采集寫入kafka或ddmq等數(shù)據(jù)通道中,部分數(shù)據(jù)需要借助內部自研同步工具完成采集,最終基于順風車數(shù)倉ods層建設規(guī)范分主題統(tǒng)一寫入kafka存儲介質中。

          命名規(guī)范:ODS層實時數(shù)據(jù)源主要包括兩種。

          • 一種是在離線采集時已經自動生產的DDMQ或者是Kafka topic,這類型的數(shù)據(jù)命名方式為采集系統(tǒng)自動生成規(guī)范為:cn-binlog-數(shù)據(jù)庫名-數(shù)據(jù)庫名 eg:cn-binlog-ihap_fangyuan-ihap_fangyuan

          • 一種是需要自己進行采集同步到kafka topic中,生產的topic命名規(guī)范同離線類似:ODS層采用:realtime_ods_binlog_{源系統(tǒng)庫/表名}/ods_log_{日志名} eg: realtime_ods_binlog_ihap_fangyuan

          2.2 DWD 明細層建設

          根據(jù)順風車業(yè)務過程作為建模驅動,基于每個具體的業(yè)務過程特點,構建最細粒度的明細層事實表;結合順風車分析師在離線側的數(shù)據(jù)使用特點,將明細事實表的某些重要維度屬性字段做適當冗余,完成寬表化處理,之后基于當前順風車業(yè)務方對實時數(shù)據(jù)的需求重點,重點建設交易、財務、體驗、安全、流量等幾大模塊;該層的數(shù)據(jù)來源于ODS層,通過大數(shù)據(jù)架構提供的Stream SQL完成ETL工作,對于binlog日志的處理主要進行簡單的數(shù)據(jù)清洗、處理數(shù)據(jù)漂移和數(shù)據(jù)亂序,以及可能對多個ODS表進行Stream Join,對于流量日志主要是做通用的ETL處理和針對順風車場景的數(shù)據(jù)過濾,完成非結構化數(shù)據(jù)的結構化處理和數(shù)據(jù)的分流;該層的數(shù)據(jù)除了存儲在消息隊列Kafka中,通常也會把數(shù)據(jù)實時寫入Druid數(shù)據(jù)庫中,供查詢明細數(shù)據(jù)和作為簡單匯總數(shù)據(jù)的加工數(shù)據(jù)源。

          命名規(guī)范:DWD層的表命名使用英文小寫字母,單詞之間用下劃線分開,總長度不能超過40個字符,并且應遵循下述規(guī)則:realtime_dwd_{業(yè)務/pub}{數(shù)據(jù)域縮寫}[{業(yè)務過程縮寫}]_[{自定義表命名標簽縮寫}]

          • {業(yè)務/pub}:參考業(yè)務命名

          • {數(shù)據(jù)域縮寫}:參考數(shù)據(jù)域劃分部分

          • {自定義表命名標簽縮寫}:實體名稱可以根據(jù)數(shù)據(jù)倉庫轉換整合后做一定的業(yè)務抽象的名稱,該名稱應該準確表述實體所代表的業(yè)務含義
            樣例:realtime_dwd_trip_trd_order_base

          2.3 DIM 層

          • 公共維度層,基于維度建模理念思想,建立整個業(yè)務過程的一致性維度,降低數(shù)據(jù)計算口徑和算法不統(tǒng)一風險;

          • DIM 層數(shù)據(jù)來源于兩部分:一部分是Flink程序實時處理ODS層數(shù)據(jù)得到,另外一部分是通過離線任務出倉得到;

          • DIM 層維度數(shù)據(jù)主要使用 MySQL、Hbase、fusion(滴滴自研KV存儲)?三種存儲引擎,對于維表數(shù)據(jù)比較少的情況可以使用 MySQL,對于單條數(shù)據(jù)大小比較小,查詢 QPS 比較高的情況,可以使用 fusion 存儲,降低機器內存資源占用,對于數(shù)據(jù)量比較大,對維表數(shù)據(jù)變化不是特別敏感的場景,可以使用HBase 存儲。

          命名規(guī)范:DIM層的表命名使用英文小寫字母,單詞之間用下劃線分開,總長度不能超過30個字符,并且應遵循下述規(guī)則:dim_{業(yè)務/pub}{維度定義}[{自定義命名標簽}]:

          • {業(yè)務/pub}:參考業(yè)務命名

          • {維度定義}:參考維度命名

          • {自定義表命名標簽縮寫}:實體名稱可以根據(jù)數(shù)據(jù)倉庫轉換整合后做一定的業(yè)務抽象的名稱,該名稱應該準確表述實體所代表的業(yè)務含義?樣例:dim_trip_dri_base

          2.4?DWM 匯總層建設

          在建設順風車實時數(shù)倉的匯總層的時候,跟順風車離線數(shù)倉有很多一樣的地方,但其具體技術實現(xiàn)會存在很大不同。

          第一:對于一些共性指標的加工,比如pv,uv,訂單業(yè)務過程指標等,我們會在匯總層進行統(tǒng)一的運算,確保關于指標的口徑是統(tǒng)一在一個固定的模型中完成。對于一些個性指標,從指標復用性的角度出發(fā),確定唯一的時間字段,同時該字段盡可能與其他指標在時間維度上完成拉齊,例如行中異常訂單數(shù)需要與交易域指標在事件時間上做到拉齊。

          第二:在順風車匯總層建設中,需要進行多維的主題匯總,因為實時數(shù)倉本身是面向主題的,可能每個主題會關心的維度都不一樣,所以需要在不同的主題下,按照這個主題關心的維度對數(shù)據(jù)進行匯總,最后來算業(yè)務方需要的匯總指標。在具體操作中,對于pv類指標使用Stream SQL實現(xiàn)1分鐘匯總指標作為最小匯總單位指標,在此基礎上進行時間維度上的指標累加;對于uv類指標直接使用druid數(shù)據(jù)庫作為指標匯總容器,根據(jù)業(yè)務方對匯總指標的及時性和準確性的要求,實現(xiàn)相應的精確去重和非精確去重。

          第三:匯總層建設過程中,還會涉及到衍生維度的加工。在順風車券相關的匯總指標加工中我們使用Hbase的版本機制來構建一個衍生維度的拉鏈表,通過事件流和Hbase維表關聯(lián)的方式得到實時數(shù)據(jù)當時的準確維度

          命名規(guī)范:DWM層的表命名使用英文小寫字母,單詞之間用下劃線分開,總長度不能超過40個字符,并且應遵循下述規(guī)則:realtime_dwm_{業(yè)務/pub}{數(shù)據(jù)域縮寫}{數(shù)據(jù)主粒度縮寫}[{自定義表命名標簽縮寫}]{統(tǒng)計時間周期范圍縮寫}:

          • {業(yè)務/pub}:參考業(yè)務命名

          • {數(shù)據(jù)域縮寫}:參考數(shù)據(jù)域劃分部分

          • {數(shù)據(jù)主粒度縮寫}:指數(shù)據(jù)主要粒度或數(shù)據(jù)域的縮寫,也是聯(lián)合主鍵中的主要維度

          • {自定義表命名標簽縮寫}:實體名稱可以根據(jù)數(shù)據(jù)倉庫轉換整合后做一定的業(yè)務抽象的名稱,該名稱應該準確表述實體所代表的業(yè)務含義

          • {統(tǒng)計時間周期范圍縮寫}:1d:天增量;td:天累計(全量);1h:小時增量;th:小時累計(全量);1min:分鐘增量;tmin:分鐘累計(全量)
            樣例:realtime_dwm_trip_trd_pas_bus_accum_1min

          2.5 APP 應用層

          該層主要的工作是把實時匯總數(shù)據(jù)寫入應用系統(tǒng)的數(shù)據(jù)庫中,包括用于大屏顯示和實時OLAP的Druid數(shù)據(jù)庫(該數(shù)據(jù)庫除了寫入應用數(shù)據(jù),也可以寫入明細數(shù)據(jù)完成匯總指標的計算)中,用于實時數(shù)據(jù)接口服務的Hbase數(shù)據(jù)庫,用于實時數(shù)據(jù)產品的mysql或者redis數(shù)據(jù)庫中。

          命名規(guī)范:基于實時數(shù)倉的特殊性不做硬性要求

          二、美團OneData數(shù)倉項目

          OneData: 阿里巴巴提出的數(shù)倉建設標準



          摘要

          美團基于OneData思想和現(xiàn)有業(yè)務架構情況,提出了新的標準和目標:



          實現(xiàn)方法:統(tǒng)一歸口和出口 統(tǒng)一歸口:業(yè)務歸口統(tǒng)一、設計歸口統(tǒng)一和應用歸口統(tǒng)一,從底層保證了數(shù)倉建設的三特性和三效果
          統(tǒng)一出口:


          1. 交付標準化

          2. 數(shù)據(jù)資產管理:統(tǒng)一維度,指標元數(shù)據(jù)出口等



          基于此,實現(xiàn)了分層模型:



          正常開發(fā)應遵循ODS-DWD—DWT-DWA-APP的流程,同時根據(jù)架構做出 開發(fā)規(guī)范:



          1. 正常流向:ODS>DWD->DWT->DWA->APP,當出現(xiàn)ODS >DWD->DWA->APP這種關系時,說明主題域未覆蓋全。應將DWD數(shù)據(jù)落到DWT中,對于使用頻度非常低的表允許DWD->DWA。盡量避免出現(xiàn)DWA寬表中使用DWD又使用(該DWD所歸屬主題域)DWT的表。

          2. 同一主題域內對于DWT生成DWT的表,原則上要盡量避免,否則會影響ETL的效率。

          3. DWT、DWA和APP中禁止直接使用ODS的表,

          4. ODS的表只能被DWD引用。

          5. 禁止出現(xiàn)反向依賴,例如DWT的表依賴DWA的表。






          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一区二区视频观看 | 翔田千里无码播放HD | 男人和女人操逼网站 | 日韩欧美三级电影在线观看 | 无码免费观看视频 |