1. 程式人生 > >專欄筆記:基於hadoop生態圈的資料倉庫實踐

專欄筆記:基於hadoop生態圈的資料倉庫實踐

概述

資料倉庫是一個面向主題的、整合的、隨時間變化的、非易失的資料集合,用於支援決策。它主要的目標是分析和處理資料,和傳統的操作型事務處理有很大區別。

之所以不直接在操作型系統上執行分析查詢,而是從操作型系統抽取資料,最主要有以下兩個原因:(1)在操作型系統上直接執行分析查詢會使業務系統受到影響,很可能使其變慢甚至宕機。(2)在操作型系統中很可能查不到分析所需要的資料。出於效能的考慮,操作型系統一般都不會保留很長的歷史記錄,而只是保留近期活躍的資料,但資料倉庫中理論上應該保留所有決策需要的資料,即除了活躍資料外,還應該包含大量的歷史歸檔資料。

資料倉庫主要有規範化資料模型、多維資料模型、Data Vault資料模型等建模方法,其中前兩種使用最為廣泛。規範化模型用於企業級資料倉庫(EDW)建模,而多維模型多用於資料集市建模。規範化模型對於資料庫設計者來說非常熟悉,其核心思想就是消除資料冗餘以保證資料一致性和事務處理的效能。通常業務資料庫、OLTP系統都採用規範化模型,其中常見的有1NF、2NF和3NF。簡單地說,1NF就是消除重複元組,並保持列的原子性,具體到資料庫設計上就是每個表都要有一個主鍵來唯一標識一行記錄。2NF就是在1NF的基礎上消除了部分依賴,即非鍵屬性必須完全依賴於主鍵。3NF在2NF基礎上消除了傳遞依賴,即非鍵屬性只能完全依賴於主鍵。一般資料庫設計需要滿足3NF。而對於多維模型最簡單的描述是,按照事實表、維度表來構建資料倉庫或資料集市,這種模型被人們熟知的有星型和雪花型。

Hadoop MapReduce的實現分為split、map、shuffle和reduce四步:

  1. HDFS分佈資料。
  2. 向YARN請求資源以建立mapper例項。
  3. 在可用的節點上建立mapper例項。
  4. 對mappers的輸出進行混洗,確保一個鍵對應的所有值都分配給相同的reducer。
  5. 向YARN請求資源以建立reducer例項。
  6. 在可用的節點上建立reducer例項。

環境搭建

使用Hive作為多維資料倉庫的主要挑戰是處理漸變維(SCD)和生成代理鍵。處理漸變維需要配置Hive支援行級更新,並在建表時選擇適當的檔案格式。生成代理鍵在關係資料庫中一般都是用自增列或序列物件,但Hive中沒有這樣的機制,得用其它辦法實現,在後面ETL部分再詳細討論。