第二章 文獻回顧
第二節 巨量資料技術發展
巨量資料使用到的技術層面相當廣泛,而新的技術亦持續在發展及精進當中,包 含在巨量資料的整合、操作分析及視覺化(Visualize),結合統計學及電腦科學及各專 業領域,屬於跨領域的應用(Manyika et al., 2011)。
巨量資料屬於資料科學(Data Science)的一部分,資料科學早期又稱為資料學
(Datalogy),該名詞於 1996 年在國際會議(國際分類協會聯合會(IFCS,International Federation of Classification Societies)東京雙年會議)正式提列為討論議題,定義為研 究自資料中萃取知識的科學(the Extraction of Knowledge from Data)。
巨量資料興起,包含了遙測探測技術、無線感測網路、相機及監視器及無線射頻 辨識等的發展,同時配合儲存技術的發展,讓資訊的蒐集可以更快速、更即時,使得 各資訊的來源越廣,所可以提供的資訊也更多。
而從空間資訊科學來看,無論是在自動製圖、遙感探測及或其他各種地理資訊的 呈現及處理,巨量資料的本質已幾乎成為通則,其面對的課題像是:需發布、整合應 用不同感測器(遙測衛星)來源取得的遙測影像,對於資料取得方法之描述、以至處 理校正過程資訊,都成為資料正確應用的必要條件,對應的作法像是依循圖書館學提 出的都柏林核心集(Dublin Core)及 ISO 系列等詮釋資料標準建置、註冊及分享作業 等;而此時地理資料處理(Geo-processing)由資料分析進入資料探勘(Data Mining), 透過機器學習(Machine-learning)的方法,以利擷取龐大資料內隱藏的關聯性;又地 理資訊是對真實世界建模量測的結果,當資訊來源於各種不同的方法、尺度及觀點,
透過資料品質指標(DQI,Data Quality Indicators)的建立,可提供資料使用的準則及 限制資訊,亦需各種演算法或工具將資料重整,以針對這些龐大且具不確定性的資料 取得一致性的描述,轉化為知識;透過知識本體(Ontology)的建立,將專業領域的 知識架建立起來,將各個來源的資料、表面看來異質性的資料、甚至決策上面對到的 真實問題,都可透過知識類別對應、串聯起來,以促成知識層面的整合利用(Jeansoulin,
2015)。
引用 IDC 的定義(Olofson, 2012),其將巨量資料技術(Big Data Technologies)
定位為新一代的技術及架構,設計用來有效率地萃取數量龐大且廣泛多樣化的資料,
並允許操作過程能高速的存取、探索及分析,包含了硬體、軟體及服務層面以整合、
組織、管理、分析及呈現(Visualization)資料。基礎於巨量資料基本特性的 3V(Volume, Velocity and Variety)架構外,另增加 1 個 V(Value),指的是資料價值,其價值的評 斷包含了技術投入成本及資料使用效益兩個層面,其中技術成本是相當關鍵的因子,
需考量投入軟硬體等基礎資訊架構耗費的資金成本、提升資料操作效率所減省的人力 成本及強化組織內部流程的經營成本。
而在討論巨量資料的技術時,亦可將其區分為 2 種類別(Olofson, 2012):
一、動態巨量資料(Big Data in Motion):指的是大量、快速串流的資料,需要於資 料接收的當下被立即過濾及正規化,並進一步反應、回饋事件的發生,如複合 事件處理(CEP,Complex Event Processing)的系統概念。
二、靜態巨量資料(Big Data at Rest):多數對於巨量資料的討論則是在靜態性的資 料處理技術, 能在最有效率的狀態下,就蒐集資料進行重整、轉化分析,讓資
料維持一定的狀態,提供有意義的搜尋、探勘及問題分析。資料處理包含了結 構化(如關聯式資料庫)及非結構化資料(如 XML 或一般使用的自然語言), 關聯式資料庫一般通用的查詢語言為 SQL 指令,因此在處理非關聯式資料庫 的查詢語法則統稱為 NoSQL,目前被提出來討論的技術包含:Key-Value、Grid-based key-value、List-processing、Graph 等,而現行被廣為使用的 Hadoop 便是 其中一種解決方案。
Hadoop 專案是由 Apache 軟體基金會發展的一套開放源(Open-source)軟體框架,
以 JAVA 為開發語言,可在跨平台作業系統環境運作,支援電腦叢集(Computer Clusters)
之間大型資料集的分散式運算,並允許偵測容錯。Hadoop 顯然成為近年巨量資料處理 的主流技術解決方案,目前包含 Yahoo、Google、Amazon 及 Facebook 等知名網站均 採用 Hadoop 為基礎速進行開發。其名稱來源並非是任何英文縮寫的簡稱,而是以原 始作者小孩的一隻黃色絨毛小象玩具為名,黃色小象目前也成為 Hadoop 的吉祥物。
其程式框架包含許多子模組及關聯的開發方案,其中 HDFS(Hadoop 分散式檔案系統,
Hadoop Distributed File System)為處理資料儲存議題的核心,而 MapReduce 及 YARN
(亦稱為 MRv2,即 MapReduce 2.0)部分則主要在於資料分散式運算議題。
HDFS 的分散式檔案儲存方式,係將檔案分割成許多特定大小的區塊(block),其 實體檔案分割之區塊同時以複本方式分散存放於不同的資料節點(Data Node),而透 過名稱節點(Name Node)處理檔案系統的詮釋資料,即管理檔案與各區塊間、以及 各區塊與各資料節點間的對應關係,控制跨節點間的資料讀寫流程;其複本分散存放 的作法,亦提升其資料之安全性,可因應硬體故障情形下搜尋複本自動回復。而 MapReduce 則是由 Google 提出的演算法,可用來協調電腦間資源配置,達到程式分 散式的運算處理,其中 Map 及 Reduce 均為一種演算函數,Map 函數的運算模式,是 將輸入的鍵值(Key-value)序列透過相同的運算輸出為另一組的中繼(Intermediate)
鍵值序列,Reduce 函數則是負責將相同的中繼鍵合併其所有相關聯的中繼值;過程中 由使用者進行函數的定義,而 MapReduce 框架則可進行後端電腦叢集間的的平行運 算,加速處理資料處理效能。YARN 則是基礎於 MapReduce 之上,主要在進行整個分 析流程的工作計劃(Job Scheduling)及電腦叢集資源的配置管理。其處理流程可參考 下圖所示,由資源管理者(Resource Manager)進行整體工作計劃,而主要應用
(ApplicationMaster)係與節點管理者(NodeManager)共同運作,負責每個 Map-Reduce 工作的實際運作,其運算分配並依檔案實際存放架構進行配置(圖 1):
圖 1 YARN 運作流程示意圖
(資料來源:Hadoop 官方文件網站)