一、 緒論
1.1 背景
物聯網(Internet of Things)的興起,透過網路作為人與人、人與物與物 與物之間的溝通管道,透過感測裝置(Sensor)加以傳送、蒐集、監控與分析 (National Institute of Standards and Technology, NIST)定義雲端運算有五種 基本特性[3]:
(1) 自助需求式服務(On-demand self-service):使用者能夠依照不同的需求 索取計算資源,且不必與資源供應商互動。
(2) 廣泛的網路存取(Broad network access):透過標準機制讓使用者能夠在 不同的平台上使用。
(3) 資源池共享(Resource pooling):資源供應商的運算資源透過虛擬化技 術(Virtualization Technology)抽象化為資源池,能夠根據每個使用者不 同的需求動態分配其所需資源。
(4) 快速且彈性(Rapid elasticity):對於使用者來說,資源是無限制的供應 且能夠在任何的時間取得。
(5) 計量的服務(Measured service):使用者或供應商能夠透明的去限制、監 控與紀錄資源使用率。
2
雲端運算所提供的三種服務模式為:軟體及服務(Software as a Service)、
平台及服務(Platform as a Service)與基礎及服務(Infrastructure as a Service),
使用者不必透過第三方的許可,皆能依照不同的需求向供應商租用服務,
並且支付相對的花費。於企業而言,由於資訊發展快速,資料規模也越來 越大,因此企業常常購買大量設備以滿足高效能之計算資源之需求,然而 當面臨需求降低、設備老舊或不足以負荷大數據時,企業等同於虧損成本;
在雲端環境之下,企業只需要與雲端供應商租借所需之資源,並且簽訂服 務協議(Service Level Agreement)[4],當需求降低,供應商便收回不需要之 資源,也不必擔心有設備老舊必須汰換的問題,依照使用量支付供應商相 快速(Velocity) 、價值性(Value)、準確性(Veracity)等,由於物聯網所產生之 巨量資料是連續性且需要即時分析,然而系統無法一次處理大規模之數據,
因此會將這些數據切割成資料流(Data stream)的方式送入系統裡分析,而 分析巨量資料則有兩種方式[8][9]:1.批次處理(Batch processing)、2.串流資 料處理(Real-time stream processing),兩者的不同在於前者將資料累積到一 定數量再進行分析;後者為快速的處理連續性的資料。
無論是批次作業處理或是串流資料處理,所需面臨的第一個問題即是 海量資料所需的計算資源與儲存空間,以實體機器來儲存這些資料,有可 能會因為空間不足耗費更多的成本購買設備,又或者會因為供大於需而產
3
(2)多個運行中的虛擬機器(Virtual Machine)請求會對彼此相關的資源存取 產生干擾(Memory interference)。
因此本研究去探討資源配置對於串流資料處理的影響,提升系統之效能,
4
本研究觀察串流處理系統在分析動態的資料時,發現由於每單位時間 處理資料量多寡不一,因此需要動態的調整資源配置。然而,資源配置的 問題是一個NP-problem,並沒有哪一個演算法能夠適用於所有的情況,在 以往的文獻之中提出了許多演算法像是:0/1背包演算法(0/1 Knapsack algorithm)[12]、賽局理論(Game theory)[13],裝箱問題演算法(Bin-packing algorithm)[14]等來解決不同之資源排程問題,然而,資源配置之相關文獻 中並沒有考量到串流資料共享資源的多個虛擬機器(Virtual machine)彼此 之間會存在的資源競爭而所產生的資源干擾現象。因此本論文除了去考慮 每個工作(Task)的資源存取量之外,同時也考慮資料相依性之問題,而為了 最小化整體的處理時間,串流資料處理應用可以被表示為有向圖(Directed Acyclic Graph, DAG),其中點為Task而邊表示為資源存取量。
1.4 研究目標
本研究針對資源配置問題,開發了一個資源存取之關鍵路徑演算法 (Memory Access Critical Path Schedule, MACPS),透過剖析系統(Profiling system)所分析之應用程式之行為將 Tasks 以 DAG 圖呈現,此時會出現多 張相似的 DAG 圖,而我們利用 MACPS,去計算 Tasks 最長計算時間與最 早能夠開始執行之時間,藉由此兩個參數去決定關鍵路徑,同時考量了資 料區域性(Data locality)與實體機器之最快開始執行時間(Earliest start time),
將關鍵路徑之節點盡量配置到同一台實體機器,降低額外的溝通時間 (Communication time),避免其他 Tasks 存取此台實體機器之資源進而造成 資源衝突或搶奪的現象發生,除了考量了同一台實體機器上的虛擬機器之 間的資源存取干擾與各個實體機器之間的資料存取干擾,我們也在單雲以 及跨雲上之模擬環境下分析五個排程方法之效能。我們的目標為,創建出 最適合串流應用程式之虛擬叢集系統建置方式。
5
1.5 論文架構與內容
本論文的架構如下:第一章節引出本篇論文的研究背景與動機,說明所 面臨的挑戰,並簡略的說明改善之方法。第二章將說明與本篇論文相關之 技術,包含雲端運算,串流資料處理等。第三章將詳細說明本篇研究所使 用之系統架構與演算法。第四章將描述本文實驗環境,並以圖文展示系統 相關實驗與結果。最後,第五章為本論文之結論與未來展望。
6