• 沒有找到結果。

第二章 文獻探討

第三節  雲端運算

二、  Apache Hadoop

1. SaaS(Software as a service):指軟體供應商提供軟體給使用者當成是一 種服務。使用者只要連上網路就能使用該軟體。

2. PaaS(Platform as a service):提供一個平台供許多人在上面創作、分享 特定領域的知識。

3. IaaS(Infrastructure as a service):提供了資訊基礎建設的租用,供中小 企業使用,以降低購置伺服器的成本。

Hadoop 是 Apache 軟體基金會所研發的 open source 分散式運算與儲存系統,

Hadoop 是根據 Google 公司發表的 MapReduce 和 Google 檔案系統(Google Filesystem)的論文實作而成的。現今有許多知名企業 Yahoo!, Facebook 等也都有 利用Hadoop 來開發其應用,可見其發展受到許多資訊業之肯定。一般來說建構 Hadoop 最關鍵的兩個核心機制為 MapReduce 及 HDFS。

1. HDFS

Hadoop Distributed File System,簡稱 HDFS,為 Hadoo 的分散式檔案系統。

HDFS 有著高容錯性(fault-tolerant)的特點,並且設計用來部署在低廉的(low-cost)

硬體上。而且它提供高輸送量(high throughput)來訪問應用程式的資料,適合 那些有著超大資料集(large data set)的應用程式。HDFS 可在多顆磁碟中平行進 行資料讀取及寫入,以解決因硬碟I/O 速度所造成之效能低落,且能儲存以往無

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

15

一個 HDFS 叢集裡面會有兩種類型的節點,namenode 和 datanode,還有備 份用的secondary namenode。

 Namenode:管理檔案系統命名空間,負責維護檔案系統的樹狀結構和 所有檔案及目錄的 metadata。namenode 會知道所有檔案區塊是分佈在 哪一個datanode 裡,所以當客戶端存取檔案時,其實是向 namenode 索 取實際資料儲存的地方。當 namenode 損毀時,HDFS 上的資料都會消 失(因為找不到檔案區塊放在哪邊)。

 Datanode:檔案系統實際儲存資料的地方,會定時向 namenode 回報目 前儲存的區塊清單資訊。

 Secondary namenode:secondary namenode 通常會運行在另一個實體主 機上,當namenode 損毀時,可用來復原 namenode。

2. MapReduce

MapReduce 是 Google 提出的一個軟體架構,用於大量資料(大於 1TB)的 平行運算,主要是利用"Map(映射)"和"Reduce(化簡)"來達到平行運算的能 力。程式開發人員在撰寫程式時於 Map 架構下將問題分成更小的子問題,並且 分配給不同的節點來運算,在Reduce 時收集所有子問題的解答,並彙整形成主 問題的答案。而MapReduce 強大之處,就是在於程式設計師僅需撰寫 MapReduce 程式就可以讓成千上萬台電腦為你的任務而工作。

MapReduce 通過把對數據集大規模操作分發給網路上的每個節點實現可靠 性,每個節點會定期像主節點回報完成的工作,若是某個節點一段時間沒有回報,

主節點就會將這個節點記錄為死亡,並將數據集分配到另外一個節點去。

MapReduce 就是藉由這種方式來達到系統的可靠性。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

16

圖 2-4 MapReduce 執行流程

MapReduce 的執行流程如下:

1. MapReduce 架構首先會將該程式所要處理的資料分割成 M 塊,每塊大 小多為16~64MB 之間,其中會有一個節點當作主節點 Master。

2. Master 負責將 M 個 Map 任務分派給空閒的 worker,也負責將 R 個 Reduce 任 務分配給空閒的 worker。

3. 其中一個被分配 Map 任務的 worker 從被分割的資料中讀取所需要處 理的資料片段,從輸入資料中剖析出key/value pair 並且傳送給使用者 所撰寫的Map 程式處理。Map 程式再將產生出來的中間結果 key/value pair 存到緩衝記憶體。

4. 這些緩衝到記憶體的中間結果將會被定時地寫入本機硬碟,並且透過 partition 機制分割 R 個區域。而這些中間結果所儲存的位置資訊將會 被傳回 Master,並且交由 Master 將此資訊遞送給執行 Reduce 的 worker。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

17

5. 當 Master 通知 Reduce 的 worker 這些位置資訊時,worker 便會使用 RPC 來讀取 Map worker 所產生的中間資料。

6. Reduce worker 會取出所有相同 key 的 value 傳送給開發人員所撰寫的 Reduce 程式進行處理。

7. 當所有的 Map 與 Reduce 任務都處理完了之後,Master 會將執行的權 限交給開發人員所撰寫的程式來繼續執行。

看完了 MapReduce 的概念之後,就可以來瞭解一下在 Hadoop 上實際運作 MapReduce 的方法了。

圖 2-5 Hadoop 執行 MapReduce 作業的方式 (資料來源:Hadoop The Definitive Guide 2nd edition)

整體執行程序如圖 2-5 Hadoop 執行 MapReduce 作業的方式所示,一共有下

 Jobtracker:擔任工作分配者的角色(通常只會有一個),接受使用者發起 的任務,並進行工作排程 (job scheduling),將工作(jobs)分派給

tasktrackers 執行,彙整 tasktrackers 的計算結果後,將最終結果回傳給 使用者。

 Tasktracker:實際執行任務的角色(通常會有多個),接受 jobtracker 的 工作指派,過程中有可能會跟datanode 要求運算時會用到的資料,待

例外處理(Exception Handling) 在資訊系統中是一個非常重要的議題,

它可以確保系統的可用性與可靠性,避免系統在意想不到的狀況下發生錯誤,

導致服務中斷或資料毀損。MapReduce 作業的失敗處理非常完善,一般來說 正常會碰到的失敗情況分為任務失敗、tasktracker 失敗及 jobtracker 失敗。

 任務失敗(task failure):最常發生的就是 map 任務或 reduce 任務執行時 出現錯誤而丟出一個例外情況(exception),當出現此情況時會先將錯誤 回報給tasktracker,並將任務標記為失敗,由 jobtracker 重新安排工作。

 tasktracker 失敗(tasktracker failure):jobtracker 會定期檢查 tasktracker 的 狀態,如果因為當機或執行過於緩慢,則會重新安排工作。

 jobtracker 失敗(jobtracker failure):這種情況是最嚴重的錯誤,不過發生 的機率非常低,目前Hadoop 還沒有機制來處理這種情況。未來的 Hadoop 發行版本將可以執行多個 jobtracker 來解決這個問題。

相關文件