数据中台
原文地址:https://miaowenting.site/2020/03/24/%E5%85%B3%E4%BA%8E%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%8F%B0%E7%9A%84%E6%80%9D%E8%80%83%E4%B8%8E%E6%80%BB%E7%BB%93/
數據中臺
?
數據匯聚
數據匯聚是數據中臺必須提供的核心工具,把各種異構網絡、異構數據源的數據方便地采集到數據中臺中進行集中存儲,為后續(xù)的加工建模做準備。數據匯聚方式一般有數據庫同步、埋點、網絡爬蟲、消息隊列等;從匯聚的時效性來分,有離線批量匯聚和實時采集。
數據采集工具
Canal、DataX、Sqoop
數據開發(fā)
數據開發(fā)模塊主要面向開發(fā)人員、分析人員,提供離線、實時、算法開發(fā)工具。
離線開發(fā)
作業(yè)調度
?依賴調度:所有父作業(yè)運行完成后,當前作業(yè)才能開始運行。圖64中的作業(yè)B,只有父作業(yè)A和C運行完成后,才能開始被調度。?時間調度:可指定作業(yè)的調度開始時間。圖64中的作業(yè)B,只有到達05:00后才能開始被調度。
基線控制
在大數據離線作業(yè)中,作業(yè)執(zhí)行時間較長,經常遇到急著用數據發(fā)現數據還沒出來的情況。采用算法對作業(yè)完成時間進行智能預測,根據預測,當作業(yè)無法正常產出且動態(tài)調整無法完成時,調度中心會及時通過監(jiān)控告警通知運維值班人員提前介入處理,為大數據作業(yè)執(zhí)行留出充裕的時間。
異構存儲
企業(yè)內部的存儲計算引擎呈多元化趨勢。離線開發(fā)中心針對每種類型的計算引擎會開發(fā)不同的組件,例如,針對Oracle開發(fā)Oracle插件,針對Hadoop體系分別開發(fā)出Hive、Spark、MR等插件。用戶在界面新建各種作業(yè)類型,在執(zhí)行時自動根據作業(yè)的類型尋找相應的插件來運行作業(yè)。
代碼校驗
對于常見的SQL任務類型,SQL檢查器會做好嚴格的管控,做到事前發(fā)現問題。
多環(huán)境級聯
通過環(huán)境級聯的方式靈活支持企業(yè)的各類環(huán)境需求,方便對資源、權限進行控制和隔離。每個環(huán)境有獨立的Hive數據庫、Yarn調度隊列,甚至不同的Hadoop集群。常見的環(huán)境如下:
?單一環(huán)境:只有一個生產環(huán)境,內部管理簡單。?經典環(huán)境:開發(fā)環(huán)境中存放脫敏數據、供開發(fā)測試使用,上生產環(huán)境走發(fā)布流程,用于真實數據生產。?任務、資源和函數必須在開發(fā)環(huán)境下進行新建、修改或刪除,再經過提交、創(chuàng)建發(fā)布包、同意發(fā)布三個操作后,才能同步到生產環(huán)境。?復雜環(huán)境:企業(yè)有外部人員和內部人員,會給外部人員提供一個脫敏管控的環(huán)境,外部人員開發(fā)完的數據模型經過測試后發(fā)布到內部開發(fā)環(huán)境。
推薦依賴
隨著業(yè)務的不斷深入,數據開發(fā)人員需要開發(fā)的作業(yè)會不斷累加。既能保證準確找到需要定位的上游作業(yè),又能保證不會形成環(huán)路。
?
?
?獲取推薦依賴的核心原理在于上下游作業(yè)輸入和輸出的表級血緣依賴圖;?通過血緣分析當前作業(yè)的輸入和輸出,找到合適的上游作業(yè);?對合適的作業(yè)進行環(huán)路檢測,剔除存在閉環(huán)的作業(yè);?返回合適的節(jié)點列表。
數據權限
企業(yè)內部計算引擎多樣化,數據權限管理面臨如下問題:
?部分引擎擁有獨立的權限管理系統(tǒng)(例如Oracle、HANA、LibrA),導致權限申請需要到每一種引擎上單獨操作,讓使用變得復雜。?同一種計算引擎,不同廠商的權限系統(tǒng)有多種,例如Hadoop自身無數據權限系統(tǒng),由不同廠商各自去實現,目前主要有兩種策略:?RBAC(Role-Based Access Control):如Cloudera用的是Sentry,華為的FI也是類似的機制?PBAC(Policy-Based Access Control):如Hortonworks用的Ranger?數據權限是由大數據集群或數據庫運維人員管理的,開發(fā)人員無法直接操作或者接觸,所有的權限申請都需要運維人員開通,造成運維人員負擔過重。在實際開發(fā)中,一般需要運維人員把整個庫的權限授權給某個開發(fā)負責人,然后庫里面的表、字段、函數的權限管理由開發(fā)負責人負責就行。?數據權限管理中心提供界面化操作,數據申請方直接在頁面上進行各種權限的申請,數據管理方在界面上審核權限,執(zhí)行同意或拒絕操作。同時,所有權限的申請、審批都會有記錄,便于進行權限審計。在統(tǒng)一數據權限服務中,會對接底層的各種權限管理系統(tǒng),例如Sentry、Ranger、Oracle,同時對數據權限管理中心提供服務,執(zhí)行權限的申請、授權、撤銷等操作。
實時開發(fā)
?元數據管理?SQL驅動?組件化開發(fā)
智能運維
任務的管理、代碼發(fā)布、運維、監(jiān)控、告警等一系列集成工具,方便使用,提升效率。重跑、重跑下游、補數據。
數據體系
有了數據匯聚、數據開發(fā)模塊,中臺已經具備傳統(tǒng)數據倉庫(后面簡稱:數倉)平臺的基本能力,可以做數據的匯聚以及各種數據開發(fā),就可以建立企業(yè)的數據體系。之前說數據體系是中臺的血肉,開發(fā)、管理、使用的都是數據。
中臺數據體系應具備以下特征:
?覆蓋全域數據:數據集中建設、覆蓋所有業(yè)務過程數據,業(yè)務中臺在數據體系中總能找到需要的數據。?結構層次清晰:縱向的數據分層、橫向主題域、業(yè)務過程劃分,讓整個層次結構清晰易理解。?數據準確一致:定義一致性指標,統(tǒng)一命名、統(tǒng)一業(yè)務含義、統(tǒng)一計算口徑,并有專業(yè)團隊負責建模,保證數據的準確一致。?性能提升:統(tǒng)一的規(guī)劃設計,選用合理的數據模型,清晰的定義并統(tǒng)一規(guī)范,并且考慮使用場景,使整體性能更好。?降低成本:數據體系的建設使得數據能被業(yè)務共享,這避免了大量煙囪式的重復建設,節(jié)約了計算、存儲和人力成本。?方便易用:易用的總體原則是越往后越能方便地直接使用數據,把一些復雜的處理盡可能前置,必要時做適當的冗余處理。
不同行業(yè)的數據體系建設:
地產行業(yè)
?
?
證券行業(yè)
?
?
零售行業(yè)
?
?
制造行業(yè)
?
?
傳媒行業(yè)
?
?
檢務行業(yè)
?
?
貼源數據層ODS
對各業(yè)務系統(tǒng)數據進行采集、匯聚,盡可能保留原始業(yè)務流程數據,與業(yè)務系統(tǒng)基本保持一致,僅做簡單整合、非結構化數據結構化處理或者增加標識數據日期描述信息,不做深度清洗加工。
?表名:ODS_系統(tǒng)簡稱_業(yè)務系統(tǒng)表名?字段名:與業(yè)務系統(tǒng)字段名保持一致,字段類型也盡可能保持一致?對于數據量比較大的業(yè)務表,采用增量同步的方式,則要同時建立增量表和全量表,增量表命名加后綴:ODS_系統(tǒng)簡稱_業(yè)務系統(tǒng)表名_delta。?對于日志、文件等半結構數據,不僅要存儲原始數據,還要存儲結構化之后的數據。
使用DataX同步數據步驟:
1)確定業(yè)務系統(tǒng)源表與貼源數據層目標表
2)配置數據字段映射關系,目標表可能會增加采集日期、分區(qū)、原系統(tǒng)標識等必要信息,業(yè)務相關內容不做轉換
3)如果是增量同步或著有條件的同步部分數據,則配置數據同步條件
4)清理目標表對應數據
5)啟動同步任務,往貼源數據層目標表導入數據
6)驗證任務是否可以正確運行,并且采集到準確數據
7)發(fā)布采集任務,加入生產調度,并配置相關限速、容錯、質量監(jiān)控、告警機制
統(tǒng)一數倉層DW
?明細數據層DWD?匯總數據層DWS
與傳統(tǒng)數據倉庫功能基本一致,對全歷史業(yè)務過程數據進行建模存儲。對來源于業(yè)務系統(tǒng)的數據進行重新組織。業(yè)務系統(tǒng)是按照業(yè)務流程方便操作的方式來組織數據的,而統(tǒng)一數倉層從業(yè)務易理解的視角來重新組織,定義一致的指標、維度,各業(yè)務板塊、業(yè)務域按照統(tǒng)一規(guī)范獨立建設,從而形成統(tǒng)一規(guī)范的標準業(yè)務數據體系。
?標簽數據層TDM
面向對象建模,對跨業(yè)務板塊、跨數據域的特定對象數據進行整合,通過IDMapping把各個業(yè)務板塊、各個業(yè)務過程中的同一對象的數據打通,形成對象的全域標簽體系,方便深度分析、挖掘、應用。
?
?
應用數據層ADS
按照業(yè)務的需要從統(tǒng)一數倉層、標簽數據層抽取數據,并面向業(yè)務的特殊需要加工業(yè)務特定數據,以滿足業(yè)務及性能需求,向特定應用組裝應用數據。
數據資產管理
數據資產管理包括對數據資產目錄、元數據、數據質量、數據血緣、數據生命周期等進行管理和展示,以一種更直觀的方式展現企業(yè)的數據資產,提升企業(yè)的數據意識。
數據資產對上支持以價值挖掘和業(yè)務賦能為導向的數據應用開發(fā),對下依托大數據平臺實現數據全生命周期的管理,并對企業(yè)數據資產的價值、質量進行評估,促進企業(yè)數據資產不斷自我完善,持續(xù)向業(yè)務輸出動力。
數據治理
傳統(tǒng)的數據治理通常包含數據標準管理、元數據管理、數據質量管理、數據安全管理、數據生命周期管理等內容。
數據服務體系
前面利用數據匯聚、數據開發(fā)建設企業(yè)的數據資產,利用數據管理展現企業(yè)的數據資產,但是并沒有發(fā)揮數據的價值。數據服務體系就是把數據變?yōu)橐环N服務能力,通過數據服務讓數據參與到業(yè)務, 快速開發(fā)企業(yè)的業(yè)務中臺等。
查詢服務
輸入特定的查詢條件,返回該條件下的數據,以API形式供上層應用調用。
1)支持配置查詢標識,底層數據組織一般會對該標識建立索引,以加快查詢速度
2)支持配置過濾項
3)支持查詢結果配置,包括數據排序規(guī)則和分頁規(guī)則。
分析服務
借助分析組件高效的大數據分析能力,對數據進行關聯分析,分析結果通過API形式供上層應用調用。
1)支持多源數據接入:企業(yè)的數據經過清洗加工轉換成數據資產后,最終通過服務作用于業(yè)務系統(tǒng),基于企業(yè)異構存儲的現狀,要求分析服務能夠支持與Hive、ES、Greenplum、MySQL、Oracle、本地文件等多種數據源進行連接。
2)高性能即席查詢:隨著企業(yè)數據爆發(fā)式增長,傳統(tǒng)的數據分析工具遇到分析能力的瓶頸,也就是對大數據量的分析越來越乏力。因此,這就要求分析服務內置高速計算引擎,以對數據進行高性能的即席計算,實現億級數據毫秒級(至多秒級)分析和計算,減少用戶等待時間。
3)多維數據分析
分析服務除了支持常規(guī)的數據分析、上卷下鉆、切片切塊之外,還應該支持多維的數據分析以及深層次的數據挖掘,發(fā)現數據背后的關聯關系。
4)靈活對接業(yè)務系統(tǒng)
推薦服務
按約定的格式提供歷史日志行為數據和實時訪問數據,推薦模型就會生成相應的推薦API,從而為上層應用提供推薦服務。
推薦服務即所謂的千人千面,對不同的人對物的行為進行數據挖掘,構建每個人與物之間的關系程度,來推薦人、物以滿足用戶的興趣愛好,以提升用戶對業(yè)務的粘性。每個人打開手機淘寶看到的內容都不一樣,這就是一種基于人的興趣愛好的推薦服務能力。
1)支持不同行業(yè)的推薦:不同行業(yè)背后的推薦邏輯是有區(qū)別的
2)支持不同場景的推薦:以內容資訊為例,在用戶冷啟動場景下,應該推薦哪些資訊?在用戶已有瀏覽行為的場景下,又該為其推薦哪些資訊?
3)支持推薦效果優(yōu)化:從導入的原始數據開始,經過推薦組件生成推薦數據,再根據用戶的瀏覽數據不斷修正推薦模型,從而使推薦效果不斷優(yōu)化
圈人服務
從全量用戶數據中,基于標簽組合篩選符合指定特征條件的人群,并通過API形式供上層應用調用。
1)支持人群圈選:通過SQL代碼或標簽取值組合等多種方式,實現人員查找,幫用戶找到對的人群
2)支持人群計量:營銷部門或者廣告公司使用圈人服務圈選出目標人群后,往往還要考慮人群量是否符合預期,因為預算有限,不可能不計成本的對人群進行營銷。
3)支持多渠道對接:將人群名單導出到相應的下游系統(tǒng)。最簡單的名單導出方式是先下載文件,再由業(yè)務人員導入相應的業(yè)務系統(tǒng)中?;蛘咧苯訉拥蕉绦畔到y(tǒng)、微信投放接口、營銷活動系統(tǒng)等。
離線平臺
蘇寧離線平臺產品功能圖:
?
?
蘇寧調度模塊功能圖:
?
?
蘇寧離線平臺整體架構圖:
?
?
跨任務流依賴的實現:
FTP事件機制,即在 FTP 服務器上建立標識文件,一個事件對應一個標識文件地址,當 FTP 服務器上的標識文件生成的時候,我們認為業(yè)務系統(tǒng)已經完成作業(yè),需要觸發(fā)平臺任務執(zhí)行。
“華佗”平臺,實施任務診斷:
?
?
立即觸發(fā)的任務,放入DelayQueue的隊列頭部,周期調度的任務,使用Quartz,依賴觸發(fā)的任務,使用zk,各個子節(jié)點監(jiān)聽自己的父節(jié)點,所有父節(jié)點執(zhí)行完畢則可觸發(fā)執(zhí)行
實時平臺
美團點評
?
?
使用了Grafana,可以內嵌到自己的平臺。
bilibili
?SQL化編程?DAG拖拽編程?一體化托管運維
實時平臺由實時傳輸和實時計算兩部分組成,平臺底層統(tǒng)一管理元數據、血緣、權限以及作業(yè)運維等。實時傳輸主要負責將數據傳入到大數據體系中。實時計算基于 BSQL 提供各種應用場景支持。
如下圖所示,實時傳輸有 APP 日志、數據庫 Binlog、服務端日志或系統(tǒng)日志。bilibili 內部的 Lancer 系統(tǒng)解決數據落地到 Kafka 或 HDFS。計算體系主要圍繞 Saber 構建一套 BSQL,底層基于 YARN 進行調度管理。
上層核心基于 Flink 構建運行池。再向上一層滿足多種維表場景,包括 MySQL、Redis、HBase。狀態(tài)(State)部分在 RocksDB 基礎上,還擴展了 MapDB、Redis。Flink 需要 IO 密集是很麻煩的問題,因為 Flink 的資源調度體系內有內存和 CPU,但 IO 單位未做統(tǒng)一管理。當某一個作業(yè)對 IO 有強烈的需求時,需要分配很多以 CPU 或內存為單位的資源,且未必能夠很好的滿足 IO 的擴展。所以本質上 bilibili 現階段是將 IO 密集的資源的 State 轉移到 Redis 上做緩解。數據經過 BSQL 計算完成之后傳輸到實時數倉,如 Kafka、HBase、ES 或 MySQL、TiDB。最終到 AI 或 BI、報表以及日志中心。
?
?
場景
?AI工程方向,解決了廣告、搜索、推薦的流式Joiner和維表Joiner?實時計算的特征支持,支持 Player 以及 CDN 的質量監(jiān)控。包括直播、PCU、卡頓率、CDN 質量等;?用戶增長,即如何借助實時計算進行渠道分析、調整渠道投放效果;?實時 ETL,包括 Boss 實時播報、實時大屏、看板等。
網易
目前網易流計算覆蓋了絕大多數場景,包括廣告、電商大屏、ETL、數據分析、推薦、風控、搜索、直播等。
事件管理
對于分布式平臺的任務操作而言,當前任務啟動過程中只允許一個人操作,而不允許兩個人同時操作,這就需要以下幾個模塊來共同配合:
?Server:事件執(zhí)行的發(fā)起者,接受事件的請求,進行數據校驗,拼裝,將事件發(fā)送給 Kernel 執(zhí)行。?Kernel:事件具體邏輯的執(zhí)行者,根據請求向集群發(fā)送指令(Shell 腳本方式)。?Admin:事件執(zhí)行結果的確認者,根據事件類型,獲取事件的最終結果,保證結果的正確性。
?
?
以啟動場景為例:
首先,Server 會接收到來自用戶的啟動請求,之后會創(chuàng)建一個分布式鎖,Admin 會監(jiān)控這個鎖。
然后, Server 向 Kernel 提交任務,提交之后會立即返回,返回之后就會立即更新數據庫中的狀態(tài),將狀態(tài)更新為啟動中,這樣在頁面上用戶就能夠看到任務是啟動中的狀態(tài)了。
接下來,Server 就會等待內核的 Shell 腳本的執(zhí)行結果,如果 Shell 腳本執(zhí)行成功了,就會去寫 Zookeeper,寫完 Zookeeper 之后 Admin 模塊就會馬上檢測到 Zookeeper 節(jié)點有狀態(tài)發(fā)生了修改,Admin 會立即去獲取 YARN 上的任務狀態(tài),如果獲取到任務狀態(tài)是運行中,就將數據庫的任務狀態(tài)更新為運行中,這會在前端看到任務就已經是運行狀態(tài)了。
最后一步是 Admin 更為完數據庫之后,會釋放掉 Zookeeper 上的鎖,其他人這時候就可以操作這個任務了。
Server、Kernel 和 Admin 這三個模塊都是不可靠的,那么如何保證其穩(wěn)定和高可用呢?Server 可以通過部署多個,水平擴展來實現,Kernel 則會由 Server 來進行監(jiān)聽,當發(fā)現 Kernel 掛了,可以由 Server 重新拉起或者重新創(chuàng)建。而 Admin 的高可用則是通過熱備來實現的,如果主 Admin 掛掉了,可以馬上遷移到備 Admin,備 Admin 可以迅速將元數據以及任務信息全部加載進來接替工作,進而實現高可用。
平臺任務狀態(tài)管理
平臺的任務狀態(tài)主要由 Server 和 Admin 來控制。Server 主要控制初始狀態(tài)的執(zhí)行,Admin 則主要負責控制所有與 YARN 相關的狀態(tài)交互。
?
?
任務調試
SQL 類型的任務支持調試功能,用戶可以根據不同的 source 表和 dim 表,上傳不同的 csv 文件作為輸入數據,進行調試。調試執(zhí)行由指定的 kernel 來完成,sloth-server 負責組裝請求,調用 kernel,返回結果,搜集日志。
?
?
日志檢索
在 YARN 集群的每個節(jié)點上面部署 Filebeat,通過 Filebeat 將節(jié)點上面的任務日志寫入到 Kafka 消息隊列中,然后通過 Logstash 進行解析處理,之后寫入 ES 集群中。主要用于兩個用途,一個是通過界面 Kibana 來提供給開發(fā)和運維人員使用,另外一個就是將運行時狀態(tài)的任務日志直接在界面上展示供用戶進行搜索和查看。
?
?
監(jiān)控
在監(jiān)控方面,使用的是 influxdb metric report 組件對于指標進行監(jiān)控。時序數據庫使用的是網易自研的 ntsdb 時序數據庫,其能夠支持動態(tài)擴展和高可用等功能。監(jiān)控指標的使用方式有兩種:
?一種是通過 Grafana 的界面來查看指標;?另外一種是報警模塊會從Ntsdb中獲取相關指標數據并進行監(jiān)控報警。
?
?
報警
Sloth 流計算平臺支持常見的任務失敗,數據滯留延遲,failover 報警,也支持用戶自定義規(guī)則報警,包括對于輸入 QPS、輸出 QPS,戶自定義延遲的監(jiān)控等。以輸入 QPS 為例,可以設置當連續(xù)幾個周期內 QPS 低于某一值時就觸發(fā)報警。此外,報警方式也支持多樣化的工具,比如各種網易內部的聊天工具、郵件、電話以及短信等,對于任務調試階段,為了避免被騷擾,可以設置任務報警抑制時間間隔。
?
?
實時數倉
目前網易很多產品已經開始實時數倉的建設了,但仍舊處于持續(xù)完善過程中。實時數倉的建設和離線數倉大致相同,只不過實時數倉是經過實時計算平臺進行處理的。大致的過程就是首先收集日志、埋點數據等,將其寫入到 Kafka 里面,經過實時計算平臺進行處理,將 ODS 層中的明細數據抽取出來,在進行匯總以及維度關聯等操作,將結果寫入到 Redis,Kudu 等,再通過數據服務提供給前端的業(yè)務使用。
?
?
電商應用-數據分析
實時活動分析、首頁資源分析、流量漏斗以及實時毛利計算等。
電商應用-搜索推薦
電商的搜索推薦場景則主要包括用戶實時足跡、用戶實時特征、商品實時特征、實時 CTR CVR 樣本組建、首頁 A 區(qū)輪播、B 區(qū)活動精選等 UV、PV 實時統(tǒng)計等。
網絡營銷中的常見名詞解釋:
?CPC (Cost Per Click): 按點擊計費?CPA (Cost Per Action): 按成果數計費?CPM (Cost Per Mille): 按千次展現計費?CVR (Click Value Rate): 轉化率,衡量CPA廣告效果的指標?CTR (Click Through Rate): 點擊率?PV (Page View): 流量?ADPV (Advertisement Page View): 載有廣告的pageview流量ADimp (ADimpression): 單個廣告的展示次數?PV單價: 每PV的收入,衡量頁面流量變現能力的指標
離線數倉與實時數倉
從0建設離線數倉
建設數倉
數據倉庫定義:在企業(yè)管理和決策中面向主題的、集成的、與時間相關的、不可修改的數據集合。
數據倉庫目標:數據資產、決策信息。
ETL過程:打通你的任督二脈(離線+實時),讓數據在整個環(huán)節(jié)中流通起來
數據分層:一套低耦合、高內聚的層級,是十分重要的,總不想業(yè)務、數據等一變化,數倉像又投胎了一次
數據集成:多業(yè)務場景下,打破數據信息壁壘,避免數據歧義,統(tǒng)一數據服務
規(guī)范化:良好的流程化、規(guī)范化設計,易維護、高擴展
監(jiān)控與輔助:質量監(jiān)控、調度管理、元數據管理、信息安全管理
走向服務:對外api服務/自助查詢平臺/OLAP分析平臺
ETL
業(yè)務數據往往涉及多種數據源,數據存儲也常常會有多種選擇。文本數據、日志數據、RMDB、Nosql等。則要求etl工具能夠覆蓋這些業(yè)務場景。
工具有datax/sqoop/kettle/informatica等等。
ETL一般為最開始的部分,凌晨之后的時間點。a:避免集中式的對某個jdbc海量同步,影響業(yè)務(部分從庫可能提供查詢服務)、b:明確調度的時間,應盡可能的在某個時間段內完成(不能僅依靠調度,實現任務流的串行;為后期的大作業(yè)空間,占用等待的系統(tǒng)資源)
分層
?
?
Stage緩沖層
事務性數據,每日增量方式進行數據同步。需要注意數據同步時的邊界問題,避免臟數據。
對于非事務性數據,一般通過快照/全量更新。不對外開放數據查詢。
ods層
一般場景下,我們認為該層數據與線上保持一致。實際處理過程中,為了處理時間維度上的數據變化,會記錄數據的變化軌跡。對于該部分數據,應該有選擇的實施,避免業(yè)務處理過程變得復雜和問題發(fā)生后難以回溯。
?dim/dw層 (模型層)?dim:維度層?dw:主題事實及業(yè)務寬表
在ods基礎上,設計一個寬表/模型層,通過維度建模的方式,實現維度數據與事實數據的分離(星型模型)。
da層(應用層)
面向不同的應用,聚合類的數據層。該層對于dim/dw層的使用,是對模型層的一個檢視維度。
代碼規(guī)范
?腳本格式規(guī)范:腳本頭部注釋編碼規(guī)范、注釋規(guī)范、sql規(guī)范參考goole規(guī)范?文件/表命名規(guī)范:一個文件中,只應該有一張表,其余只能是臨時表;表名稱應與文件名相同?字段命名規(guī)范:去除多詞同義,和同詞多義的問題。尤其是在模型層(一般也叫做一致性維度)
區(qū)別
?離線數倉主要基于sqoop、datax、hive等技術來構建 T+1 的離線數據,通過定時任務每天垃取增量數據導入到hive表中,然后創(chuàng)建各個業(yè)務相關的主題,對外提供T+1的數據查詢接口。?實時數倉主要是基于數據采集工具,如canal等原始數據寫入到kafka這樣的數據通道中,最后一般都是寫入到類似于HBase這樣的OLAP存儲系統(tǒng)中。對外提供分鐘級別,甚至秒級別的查詢方案。
?
?
?
?
數據倉庫的建設主要包括數據的采集、數據的處理、數據歸檔、數據應用四個方面。
當前主要的應用場景包括報表展示、即席查詢、BI展示、數據分析、數據挖掘、模型訓練等方面。
數據倉庫的建設是面向主題的、集成性的、不可更新的、時許變化的。
實時數倉的實施關鍵點:
?端到端數據延遲、數據流量的監(jiān)控?故障的快速恢復能力?數據的回溯處理,系統(tǒng)支持消費指定時間段內的數據?實時數據從實時數倉中查詢,T+1數據借助離線通道修正?數據地圖、數據血緣關系的梳理?業(yè)務數據質量的實時監(jiān)控,初期可以根據規(guī)則的方式來識別質量狀況
其實,你需要的不是實時數倉,需要的是一款合適且強大的OLAP數據庫。
在實時數倉的建設中,OLAP數據庫的選型直接制約實時數倉的可用性和功能性。
原始層 明細層 匯總層 應用層
?ods:原始數據層,事實數據,存儲在kafka中?dwd:數據明細層,可以做一些join等加寬處理,可以存儲在kafka和redis中?dim:維度數據,如存儲在HBase中的數據?dm:MySQL -> 匯總指標模型;Greenplum -> 明細,多維分析關聯;HBase -> 匯總指標(大量并發(fā));Redis -> 匯總、大列表TopN
數據中臺解決方案
零售行業(yè)
?
?
?RPS (Revenue Per Search): 每搜索產生的收入,衡量搜索結果變現能力指標?ROI:投資回報率(ROI)是指通過投資而應返回的價值,它涵蓋了企業(yè)的獲利目標。利潤和投入的經營所必備的財產相關,因為管理人員必須通過投資和現有財產獲得利潤。又稱會計收益率、投資利潤率。
總結