2012年8月12日 星期日

兩種企業資料 ETL 場域:「結構化」與「半/非結構化」

Big Data 素養 2


~ 素養,是個人與外界作合理而有效的溝通或互動所需具備的條件 


在企業內管理或使用 Data Warehouse (DW) 的人,對於 "ETL" (Extract, Transform, and Load) 這個用來描述將資料從來源端經過萃取 (Extract)、轉置 (Transform)、載入 (Load) 至目的端的過程,想必不陌生。E-T-L 的順序,有時也視資料處理的工具特性或應用目的,可以變成 E-L-T。

維基百科的 ETL 條目說得很好:ETL (或 ELT) 的流程可以用任何的程式語言去開發完成。

以下僅以 ETL 來概括 ETL 與 ELT。

一. 傳統  ETL 場域:結構化資料

圖 1. 從 OLTP 到 OLAP (source; redrawn by Fred Chiang )

我們在上一篇《企業資料的全貌:三種結構、三種溫度》,有約略提到 OLTP 與 OLAP,在這邊做一下簡要解釋:

OLTP

許多的企業資訊應用系統,擁有較多的人機介面,如 ERP、CRM、SCM、Web AP、Mobile App、各種客製化的 3-tier、N-tier 應用軟體,資料的進出存取,以 RDB 為載體,這些可統統被劃歸在 OLTP  (Online Transaction Processing,線上交易處理)。

OLAP

在以上各種資訊應用系統的後頭,企業可能想要進行多 RDB、跨 RDB 的商情分析 (Business Analytic)、報表系統 (Reporting)、商業智慧 (Business Intelligence),這些被劃歸 OLAP (Online Analytical Processing,線上分析處理),常見的載體是 DW。

在 Hadoop 這種以批次、大量半/非結構化資料處理為目標的技術平台還沒出現之前,企業的 ETL 處理,資料的來源端主要為 RDB (SQL DB),目的端主要為 DW,也就是將結構化資料,從 OLTP 移動到 OLAP 中間的預處理 (Preprocessing)

當然,若是企業資料沒有達到一定的規模,直接使用 RDB 來做商情分析、報表系統、商業智慧,也不是不可以。ETL 其實是一種資料的處理流程與概念,工具可大可小,不用廠商的,自己開發也行。


二. Hadoop-based  ETL 場域:半/非結構化資料

但若我們是要對日誌、GPS 點位、XML 檔案、網頁內容、圖檔、影音檔等半結構化或是非結構化資料做預處理呢?在量大的情況下 (Big Data 一般以 Terabyte 為基本處理單位),以 Hadoop 為核心平台的生態系統 (Hadoop Ecosystem),已經提供了幾種不同的軟體技術堆疊 (Software Stack),可以讓開發者 (Developer) 或資料分析師 (Analyst) 視情況取用。

圖 2. Hadoop-based ETL 相關技術堆疊舉例

  • HDFS (Hadoop Distributed File System,Hadoop 分散式檔案系統) 與 MapReduce (Hadoop 平行運算框架) 兩者為 Hadoop 的核心組成元素。開發者可以直接撰寫 MapReduce 程式來做各種的半/非結構化資料處理工作,其中當然可以包含 ETL 過程。
  • 直接撰寫 MapReduce 程式的技術水平要求較高,若改用 Pig 或 Hive,由它們來做對應的 MapReduce 編譯轉換工作,開發者就可採用較高階的語言來設計資料處理程式,降低應用門檻。

在取用不同的 Hadoop-based 技術之前,應用者必須先確認做半/非結構化資料 ETL 的目的或應用場景為何?小弟大致歸結出兩大類 Hadoop-based 應用,供您參考:

1. 線上查詢 (Online Query)

與結構化資料的 OLTP 類似,但卻因為是非交易型的半/非結構化資料 (non-transational data),資料要能夠被線上查詢,通常預處理的目的端,是要做索引 (indexing),或是存入 NoSQL DB ,以便可以做及時的搜尋 (Search) 或大量的同時查詢 (Massively Concurrent Query)。

以圖 2. 舉例來說,常見的一種技術組合應用方式,就是用 Pig  Script (一種被稱為 Pig Latin 的程式語言) 來做 ETL,將半/非結構化資料經過預處理,然後存入 HBase 這個分散式的 Key-Value NoSQL DB,進一步提供 Web 服務來做線上查詢。

2. 線上分析 (Online Analytics)

與結構化資料的 OLAP 類似,在這個領域,Hive 是最常被使用的 Hadoop-based 資料倉儲軟體,也就是這裡的 ETL 目的端。Hive 使用一種被稱為 HiveQL 的 SQL-like 語言,來讓熟悉 SQL 語法操作的資料使用者與分析師,得以快速上手。在成為可被 Hive 分析的資料集 (Data Set) 之前,半/非結構化資料必須要先被預處理。Pig,甚或 HBase,也可以成為 Hive 的 ETL 過程工具。

圖 3. Total Data:企業多結構化的資料宇宙 (source; redrawn by Fred Chiang )

從 Big Data 邁向 Total Data

綜合以上所述,ETL 要有效率且正確,必須要用正確的方式與工具「餵養」不同結構的企業資料。若是能將傳統 ETL 場域與 Hadoop-based ETL 場域合而為一,讓精煉過的半/非結構化資料,餵進 OLTP 或 OLAP 的機制中,將整個  Hadoop 生態系統當作是一個將半/非結構化資料 ETL 為結構化資料的管道;亦或是反向,將 RDB 或 DW 中的結構化資料,餵給 Hadoop 生態系統,豐富線上查詢、分析、資料探勘、或機器學習的資料來源。

多結構化 (Multi-structured) 資料所構成的 Total Data,將成為一個生生不息的宇宙,為企業創造更多的價值。



沒有留言:

張貼留言