有關於平台即服務的定義、架構和基本特性在前面有提到過。
接下來來聊聊平台即服務的相關技術。
B.資料處理模型
a.簡介
(1)平行化
為了處理更大量的資料而發展出"平行化"的概念。
(2)現有方式
b.MapReduce
因為資料量越來越龐大,傳統的資料處理方式已經無法使用,所以Google發展出MapReduce的方式處理資料。
(1)傳統方式與MapReduce的比較
過去處理資料的方式是將資料搬移到要執行計算的節點上再進行運算分析,但是很耗時。而MapReduce是一個分散式計算模型,作法相反的是將計算搬移到資料上。
另外,傳統上硬體受限時,通常是採"向上擴展"的方式,也就是在同一台機器上增加處理器核心數目與共享記憶體大小,但是此方式容易使硬體超過負荷。因此而後發展出"向外擴展"的方式,增加機器的數量,有更高的延展性同時也可以節省成本。
(2)程式設計模型
目的是要簡化傳統處理大規模資料的過程,並擷取部分使其功能抽象化。
(2)框架實作
►硬體環境:一般電腦
►軟體環境:Google檔案系統(GFS)、工作排程系統
►運作流程:
使用者的程式需先分叉成Master(唯一)、Worker(多個)兩個角色,其中Worker還分成Mapper及Reducer兩種類型。就框架的輸入/出而言,輸入是藉著分散式儲存系統與裝置,將使用者欲處理之檔案資料分散在不同的實體機器上。透過Mapper執行之後,其結果會寫到本地端的磁碟上,而Reducer便將其負責部分從遠端讀到自己機器上執行任務,再輸出最終結果。
(3)框架特性
►容錯性:
Master失效=>從距離失效前的最近一個檢查點來恢復工作。
Worker失效=>Master會定期詢問進行偵測,Mapper失效時需重新執行進行中和執行完畢的任務,而Reducer只需重新執行進行中的的任務,兩者差別在於Mapper儲存於該Worker本地端的檔案系統中,而Reducer儲存再全域的檔案系統上。
►區域性:
將一大檔案資料切割成數個chunk,然後分散到叢集中的數個機器上。Mapper會直接在這幾台機器上執行操作,再經由Reducer將這些處理後的資料取回彙整。
►細膩度:
整個框架的理想情況。Mapper和Reducer的任務數量應該比叢集之機器數量越多越好,這些任務執行順序的安排可採用管線的方式進行。
(3)框架精煉
►輸入與輸出格式:為了方便使用者,預設提供常用的輸出輸入格式。
►分割與結合函式:這兩種函式皆於Mapper處理完畢之後執行,可增進客製化與最佳化。
1.《雲端計算》 鍾葉青, 鍾武君(2013)。台灣東華書局股份有限公司