- 數據資源的管理與調度:云環境下數據與資源協同技術
- 王寧
- 27000字
- 2019-07-16 10:51:12
第2章 背景知識與相關工作
2.1 引論
眾所周知,當前雖然大數據里蘊藏著大價值,更意味著大機遇,但是如何從數據中快速、準確以及有效地提取有價值的信息卻一直困擾著我們,即數據處理的關鍵技術和相關領域都面臨著前所未有的挑戰,例如:數據處理的工程技術、數據的管理策略,以及數據分析方面的人才培養等。要想很好地把握和利用這個大機遇,讓大數據的價值最大化,我們就必須先解決這些基礎性的挑戰問題。
目前,數據的發展仍然被多種技術所束縛,如圖2-1所示,主要有:數據采集時的去冗降噪技術、成本效益高的數據存儲技術、針對數據各種類型的高效處理與分析技術、針對不同行業的數據挖掘技術,以及有效降低能耗的新技術等。到目前為止,這些技術都有待于我們進一步研究與完善,都是該領域的研究熱點問題,不僅具有理論研究意義,而且更具有廣闊的商業價值。
圖2-1 數據相關技術
在本章中,我們針對云計算環境下數據處理中的關鍵技術進行了分析和探討,主要介紹了云計算的相關知識以及數據處理的關鍵技術,包括:虛擬化技術、云存儲技術和分布式計算等。另外,在本章中,我們重點在云計算環境下針對數據的數據管理、任務調度以及容錯機制等方面進行了分析研究,并對目前存在的幾個關鍵問題進行了闡述,為后面的主要研究工作介紹做好鋪墊工作。
2.2 云計算及其關鍵技術
云計算[6,7,11-13]這個新名詞是在2007年第三季度才出現的,然而僅過了半年多時間,在Google、IBM、微軟等公司強有力的推動下,被關注的程度就已經遠遠超過了網格計算。云計算在中國的發展是從2008年開始的,當時被視為中國IT界和通信界所關注的核心。Google率先提出了云計算的概念和理念,并指出這種服務可以是任意一種形式的服務,并具有超大規模、安全可靠和虛擬化等特有功效。通過采用云計算技術,系統內各類IT資源能被有效整合,并基于虛擬化技術,來實現內部計算能力、存儲空間、網絡帶寬等資源的共享,分配比較靈活,可以適應當前飛速發展的業務需求,同時降低IT總體持有的服務成本。
云計算把基礎設施、平臺和軟件都作為服務提供給用戶,而這些服務都是在即用即付模式下的基于訂購式的服務。這些服務在產業中分別被稱為基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS)。關于云計算的概念有很多種說法,總結一下,可以理解如下:
云計算[13-16]是一種新興的商業計算模型,可以通過互聯網的方式,以便利、按需付費的方式來獲取用戶所需的計算資源(包括:網絡帶寬、存儲空間、服務器、應用以及信息服務等),這些資源都是分布在一個共享的、可配置的、由大量計算機所構成的資源池中,并可以提供IT資源的彈性伸縮服務,且能以最省力、最方便和無人干預的方式進行實時資源獲取和釋放。
2.2.1 云計算的體系結構
由于不同廠家的云計算所提供的解決方案不同,到目前為止仍然沒有統一的云計算技術體系結構。在此,我們綜合考慮了不同云計算廠家的方案,歸納出云計算技術體系結構的一般結構圖,如圖2-2所示[13-16]。云計算的技術體系結構一般可以分為四層,分別是:
圖2-2 云計算技術體系結構的一般結構圖
(1)物理資源層:包括各種計算機、存儲器、數據庫、軟件以及網絡設施等,用以確保用戶的各種請求。
(2)資源池層:將云平臺中的各類資源進行有效整合,盡量達到同構或近似同構的資源池。在該層中,重點是所有物理資源的有效集成以及管理等。
(3)管理中間件層:該層的主要任務是對云平臺中的所有資源進行高效管理,同時,可以對任務進行調度,以達到所有的資源可以為用戶提供安全、可靠、高效的優質服務。
(4)SOA構建層:云計算的能力被封裝成標準的Web Services服務,并嵌入到SOA體系中被使用和管理。例如:服務注冊管理、服務查找管理、服務訪問管理和工作流管理等。
趙庶靜從航務海事信息的資源利用率和規范化、智慧化、信息共享與擴展性系統平臺建設問題出發,分析云計算在航務系統中應用的價值與優勢,提出將信息系統架構分為資源層、平臺層與應用層的多層架構模式,對云計算特點、海事信息系統架構以及制程技術進行了深度的探討與研究分析,為海事系統中云計算的應用奠定了基礎[17]。KIM,H 提出了一個增強的可信云計算平臺,以提供用戶數據和計算的機密性和完整性,所提供的平臺提供安全且高效的虛擬機管理協議,不僅可以防止竊聽和篡改傳輸,還可以保證虛擬機僅托管在可信云端節點上以抵御內部攻擊者,該協議利用對稱密鑰操作和公共密鑰操作一起使用高效的節點認證模型,因此加密操作和通信步驟的計算成本都顯著降低[18]。從云計算的可信服務組合應用出發,孟順梅提出以服務資源層、可信服務推薦層、可信服務組合層以及可信服務執行層構建可信服務組合框架,優化云環境下系統的安全性[19]。華英針對現代數據挖掘過程中面臨的數據復雜程度高以及數據訪問量大的問題,設計了基于云計算環境下的大數據挖掘體系架構,降低了企業和運營商在數據挖掘技術中的投入,減少了研發周期,可以幫助企業實現動態資源池的配置和數據分析,滿足企業的需求,有效地提高了產品的效率[20]。Weishan Zhang提出了一種通用的基于云的架構和平臺,可以為視頻數據的智能分析和存儲提供強大的解決方案,稱為BiF(與快速處理集成的批處理)架構。我們已經實施了 BiF 使用 Hadoop 平臺和 Storm平臺的架構,分別是典型的離線批處理云平臺和在線實時處理云平臺。所提出的架構可以有效地處理連續監視視頻數據,其中無縫集成實時分析、批處理、分布式存儲和云服務,以滿足視頻數據處理和管理的要求,評估表明,所提出的方法在性能、存儲和容錯方面是有效的[21]。Ubaidullah Alias Kashif描述了云服務提供的巨大潛在優勢如何使企業對采用云計算表現出極大的興趣,由于服務提供商可以控制存儲在云上的組織的整個數據,因此無論是內部的還是外部的惡意活動都可以篡改數據和計算。這導致企業由于隱私、安全和信任問題而缺乏對服務的信任。盡管存在此類問題,但消費者沒有根級訪問權限來保護和檢查采購資源的完整性。為了在消費者和提供者之間建立信任,期望讓消費者檢查在提供者一側托管的采購平臺的安全性,Ubaidullah Alias Kashif提出了一個架構設計用于IaaS云計算的可信平臺,消費者可以通過該平臺檢查客戶平臺的完整性。TCG 的 TPM 在消費者方面被部署和使用,作為所提出的體系結構的核心組件,并且它在服務提供者和消費者之間分發[22]。
2.2.2 云計算的服務模式
在我們的日常生活中,各種各樣的云服務隨處可見。例如:Google提供的云服務包括Google文檔、Google云打印機、Google地圖以及Google Gmail等;以及騰訊公司為我們提供的QQ空間在線制作Flash圖片等。這些服務可以分為:基礎設施即服務(IaaS)、平臺即服務(PaaS)和軟件即服務(SaaS),如圖2-3所示[5-7]。
圖2-3 云計算的服務類型
IaaS(Infrastructure as a Service,基礎設施即服務)是將云平臺中的所有硬件設備等資源進行封裝,并作為一種服務供用戶使用。在IaaS中,用戶可以根據自己的業務特點選擇不同的操作系統,來完成自己想做的事情。例如:Amazon的EC2[1](彈性計算云)和S3[2](簡單存儲服務)。
PaaS(Platform as a Service,平臺即服務)是對資源的進一步抽象,它提供給用戶的服務是應用程序的運行環境。例如:Salesforce.com的Force.com[3]、Microsoft Windows Azure[4]和Google App Engine[5]。
SaaS(Software as a Service,軟件即服務)是把某些應用軟件作為服務封裝起來,用戶不必親自動手來安裝所需的軟件,而是直接向云服務商購買該服務就可以了。例如:Salesforce online CRM[6]和Microsoft的Office Live[7]。
葉燕濤分析和比較了幾種物流園區信息平臺服務模式,提出了構建基于云計算的物流信息平臺,建立了基礎設施層(IaaS)、平臺服務層(PaaS)和應用服務層3個層次,為物流園區進行服務創新提供借鑒[23]。
2.2.3 云計算的優勢分析
徐偉對云計算安全性的優勢和風險進行了分析,得出云計算安全的優勢主要有資源集中效益、更新和默認選項更有效、審計與取證、快速智能化資源升級、標準化管理安全服務的接口、安全作為市場分化元素、規模的安全與優勢等方面[24]。王丹從 IT 產業層面以及維護層面對云計算在專業分工、產業布局優化、降低管理成本與運營投資和提升資源利用效率等方面的優勢進行詳細的分析[25]。鄭輝描述了云計算對中小企業信息化影響,明確了云計算對中小企業應用優勢的分析,包括中小企業云計算應用的成本優勢分析、云計算下價值活動本身本身優勢、云計算下企業內部優勢、基于價值鏈的優勢分析等[26]。
通過使用云計算,我們可以發現,云計算的服務模式與傳統IT服務模式相比,具有很多的優勢[5-7 ,具體分析如下。
1.成本降低
云計算的成本一般由三部分構成,分別是構建成本、管理成本和能源成本。之所以說云計算可以降低成本,原因有三個:首先,在構建成本中,云平臺一般都是由廉價的云節點構建而成的;其次,在管理成本中,云計算通常采用自動化管理,這使得數據中心的管理成本大大地降低;最后,在能源成本中,云計算一般都建立在電力資源比較豐富的地區,并且采用一定的措施,可以使能源成本大大地降低。作為用戶,我們只需要通過向云服務提供商租賃所需的IT資源,以按需支付的方式付費,便可以為用戶節省大量購置、安裝以及管理軟硬件的費用。低成本應用優勢主要針對的是使用云服務的企業用戶或個人用戶。美國在國內倡導的“藍領計算計劃”(一種云計算應用),意味著要投入巨額的人力、物力、財力。“藍領計算計劃”幫助美國中小企業突破了成本和開發上的障礙。中小企業可以租用超級計算中心的硬件、軟件資源,甚至可雇用超算中心的專家隊伍,大大降低了高性能計算的使用門檻。云計算的高可擴展性是指云的規模可以動態伸縮,滿足應用和用戶規模增長的需要[27]。
2.提高資源利用率
據統計,在全球所購置的計算機中,被利用的計算機能力僅有30%,甚至低于30%,實際上,剩下的70%資源是沒有被使用,而是閑置的。傳統的數據中心在資源的高效利用和業務的可用性之間根本無法兼顧,通常都是顧此失彼,造成大部分企業數據中心的資源利用率遠遠不足15%。而采用云平臺,可以讓企業共同使用一個很大的資源池,它的規模可以根據實際情況隨時調整,還可以采用動態資源的調度機制來對資源的合理分配進行實時監控和調整,使資源的利用率超過80%。
3.彈性計算和存儲能力
通常情況下,云平臺都是由數以萬計甚至更多的服務器集群所構成的。這使得云平臺可以為數據管理和數據存儲提供無限大的資源和空間,同時也為不同用戶的各種服務提供豐富的支持。
4.靈活定制
云計算平臺可以為用戶提供靈活定制的服務。根據自己的愛好或要求,用戶可以靈活地定制其所需要的服務,包括:定制應用、資源的部署、計算能力和存儲服務等。
5.高可靠性
在云服務器端,為用戶提供了最可靠和最安全的數據存儲中心,即使在動態遷移的過程中,云平臺也能保證應用和計算的正常運行。云計算提供近乎無限的計算能力和海量數據的存儲能力,并且云端數據無須用戶容災、備份,安全性得到有效保障。用戶在處理顯示效果要求較高、計算量和存儲量較大的任務時,就不再依賴移動終端設備的性能,只要把移動終端設備接入云計算,這個過程中,在云端的處理速度和參數傳遞速度都很快,從而保證了信息處理能力。此外,用戶所有的數據都存儲在云端服務器中,用戶不再負責保存和備份數據,這就保證了資源的可靠性[28]。
6.安全性
用戶的數據或資料都存儲在“云”端,如果用戶的終端設備出現損壞或報廢等問題,用戶的數據或資料也不會有任何的損失。當用戶需要這些數據時,只需從“云”端提取即可[29]。Canetti 等人提出使用二進制樹加密機制和雙線性映射構造了安全性的公鑰加密機制。中國密碼學家胡予濮教授發現了著名的GGH多線性映射的安全缺陷,從而保證了安全性[30]。云計算擁有文件備份、斷點傳輸和數據恢復等多重保護機制,杜絕因為意外給客戶帶來巨大的財產損失。云計算這種保護機制,也有效地降低了云計算服務提供商對云計算設備的日常維護成本,相應的客戶也可以較低的費用體驗到高質量的云計算服務[31]。
2.2.4 云計算的國內外發展現狀
云計算最早源于Google公司,由于技術的不斷提升,著名的“Google云”產生,現如今已經廣泛運用到各個領域[32]。隨著云計算的快速發展,云計算已經在各個領域的應用都取得了顯著成效。云計算技術的突破,為云計算的發展創造了有利條件,使云計算的相關理論日趨成熟,尤其是美國等一些發達國家,美國搭建了許多完善的云平臺架構,IBM、微軟等利用云計算提供相應的云產品和云平臺。美國政府的大力支持,使云計算在商業以及軍事領域廣泛應用。在任務調度和資源分配問題上,Tripathy B等人提出了一種基于定向搜索優化(DSO)的人工神經網絡(ANN)和徑向基函數神經網絡(RBFNN)的工作流程調度[33]。Tang Z等人考慮了任務的信息(即任務完成時間和任務的大小),并且在自適應調度技術中使用該信息來減少總處理時間和平均響應時間[34]。Tsai等人提出了一種采用改進的差分進化算法的多目標方法。該現有方法為云計算提供了成本和時間模型。但是,在這種方法中不考慮任務的變化[35]。Magukuri等人提出了一種不考慮作業大小的負載均衡和調度算法。作者考慮了服務器在滿足請求時的刷新時間[36]。Cheng 等介紹了基于休假排隊模型的任務調度。該方法未顯示資源的適當利用[37]。林等人提出在考慮帶寬作為資源的同時調度任務,已經形成了非線性編程模型以將資源分配給任務[38]。Ergu等人提出了基于AHP排序的任務調度[39]。朱等人引入了滾動時域調度架構來安排實時任務,通過資源分配說明了任務調度與節能之間的關系[40]。國內云計算起步較晚,發展相對滯后,但是隨著我國經濟的快速發展,云計算在商業和計算中的優勢非常明顯。國內的移動“大云”和阿里的“阿里云”在近十年的發展中也有了很大的成就。全球云計算大會從首屆到2018年已經連續6年都在中國召開,標志著中國是“云”大國,有很大的市場潛力[41]。在政府的大力支持下,中國的一些大型互聯網企業以及一些高校對云計算的研究力度不斷加大,努力打造符合中國國情的“中國云”[42]。
王國峰分析和總結了模式內部威脅,從用戶和云管理的角度對云計算平臺中的用戶數據進行保護制定了云服務端執行和訪問代理執行的密文搜索方案,提出了基于操作頻率分析的用戶識別算法,可有效地檢測用戶行為是否異常[43]。姜濤針對云數據定位存儲問題,提出了云服務提供商間的合作營利數據外包模型,有效地防止了云服務提供商的再次外包存儲用戶數據。針對支持多用戶數據完整性審計方案難以支持密文的數據動態操作問題,提出了支持群用戶數據更新的公開可驗證性審計方案,實現了數據的安全審計功能[44]。云任務調度方法的好壞直接影響著云平臺的性能,針對此問題,盛小東提出了基于模板遺傳算法的任務調度算法,與Min-Min算法相比任務集合完成時間降低了20%左右,與遺傳算法相比任務集合完成時間降低了30%左右,是一種有效的任務調度算法[45]。盧晶針對當前密度峰值聚類算法的高復雜度和高算量等問題,研究了一種基于 z 值的分布式密度峰值聚類算法(DP-z),該算法有效地提高了算法的執行效率,減少了大量無效距離計算和數據傳輸開銷,提高了聚類算法的準確性[46]。為提升云平臺的對外服務能力和云計算下的大數據高效并行處理,丁言提出了一種新的針對長期負載均衡優化基于聚類分析與貝葉斯定理的啟發式多任務部署方法 LB-BC(Load Balancing approach based on Bayes theorem and Clustering)以及一種節能感知基于改進人工蜂群算法與貝葉斯概率模型的啟發式虛擬機動態遷移位置選擇策略PS-ABC(Placement Selection policy based on improved Artificial Bee Colony and bayes)[47]。張楠提出了面向功耗與任務執行穩定性優化的資源調度算法,該算法實現了對任務執行過程中的功耗和穩定性的同時優化,并且該算法對傳統輪盤賭選擇算子進行了優化,大大提高了算法的收斂速度,減少了算法的執行時間[48]。Qiong Wu針對當前的數據調度算法無法充分利用多核環境中節點的帶寬資源,導致服務器負載過重、多媒體文件播放不連續的問題,提出了一種多媒體云計算平臺數據動態任務調度方法。在多核處理器相關理論的基礎上,建立了系統模型和多媒體云計算平臺數據動態任務模型,在此基礎上引入了多媒體云計算平臺數據動態任務調度策略,仿真實驗結果表明,該方法具有很高的調度性能[49]。盧迪針對云計算資源配置的公平性問題,提出了動態評估框架公平性(DEFF),描述了云計算環境下資源需求的動態特性和計算節點數,并且采用幾種典型的資源分配算法,證明了公平性評估的有效性[50]。劉芳針對當前船舶敏感數據泄漏防止方法中數據隱藏率低和加密速度慢的問題,提出了一種新的云計算平臺下的防泄漏方法。首先,船舶通信網絡采用k匿名處理,計算了船舶通信節點集群的敏感數據丟失。其次,通過敏感數據的丟失,獲得了全船通信網絡中匿名化的敏感數據丟失船舶通信節點的匿名集群,然后計算船舶通信敏感數據的丟失率。最后,采用橢圓加密機制實現加密。采用該方法,船舶通信敏感數據的平均隱蔽率約為80%,船舶通信敏感數據加密的平均速度達到33MB/s。證明了該方法具有良好的隱蔽性能,可以防止敏感數據泄露,提高隱藏率和加密[51]。丁國軍以后期擴容運營提高產業經濟效應為研究方向,對云計算環境的技術現狀進行分析,對服務器的資源存儲計算方法以及參數的優化提出了合理的建議,為云主機業務在資源池的構建以及一般云主機的業務模型參數優化提出了有效的方法[52]。
眾所周知,Google、Yahoo、IBM、微軟和Amazon等公司都是云計算的先驅者。另外,在云計算領域中,做得比較成功的公司還包括:
(1)全球做虛擬化解決方案的領導廠商VMware。
(2)美國社交網絡服務網站Facebook,它是目前世界排名第一的照片分享站點。
(3)全球按需CRM解決方案的領導者Salesforce。
(4)全球第二大的社交網站MySpace。
(5)世界上最大的視頻分享網站YouTube等。
由于這些實力較強的云服務公司的大力推動,使得云計算發展非常迅猛,到目前為止,成熟度也較高。越來越多的機構對云計算的優勢也已經給予認可。當前,已經出現了很多商業的云計算應用平臺,圖2-4總結了2007年至2014年,著名的云公司所引領的云計算發展現狀和大事件。
云計算的目的是推動下一代數據中心的發展,通過架構這些數據中心來作為虛擬服務的網絡。這些虛擬服務包括:硬件、數據庫、用戶界面、應用邏輯等。下一代云服務提供商應該能夠滿足以下需求:①對于工作量的突然猛增的情況,我們可以動態地從其他的云服務提供商那里租賃計算和存儲能力,以擴大和提高自己的應對能力;②云服務提供商之間要通過市場價格進行競爭,并與用戶之間要有合理的服務等級協議(Service Level Agreement,SLA);③基于虛擬化技術,按需提供可靠的、成本效益好的服務,以確保高服務質量和最小化服務成本。
圖2-4 截至2014年云計算發展狀況
無論是公有云、私有云,還是混合云,只要是獨立的云平臺,那么它的資源和計算能力終歸是有限的,面對當今飛速增長的大數據,無論是數據量還是速度上來看,總會有資源缺乏的時候。因此,云計算技術正在向新的方向發展—互聯云(InterCloud)[53~55]。
互聯云又稱網際云,也叫聯盟云,是云計算服務發展的一種新模式。互聯云將不同云服務提供商的服務和資源融入其框架之中,通過跨云資源的彈性分配以及無縫對接機制,保證部署在跨云環境中的大規模云服務面向不同地理分布用戶提供更可靠的QoS服務等級保證[53]。從根本上說,互聯云提供的是一種強大的跨平臺互操作能力,以融合互聯云的各子平臺資源,達到資源與服務能力無縫擴展、統一分配的目標,而這正是不斷擴張的大數據相關應用所迫切需要的底層平臺支撐[54]。自2012年IEEE成立Intercloud互聯云工作組(ICWG/2302)[55]開始,互聯云的研究在國際上已經呈現出一種遍地開花的趨勢。然而,由于互聯云的相關研究正處在起步階段,目前國際上對互聯云的研究多集中在互聯云體系結構、互操作模式、標準化以及實驗環境等方面,而真正面向數據中心的互聯云服務的融合、資源分配及調度問題尚未得到有效解決[56~91]。
2.2.5 云計算的關鍵技術及現狀
云計算管理技術是一種為了保證數據在云平臺的高效調用并執行的過程,而對云計算系統中的大量數據進行調用、計算、分析處理的技術。BigTable 是云計算數據管理技術中比較成熟的一種技術。BigTable 技術首先將數據讀入到云計算處理系統中,然后按照關鍵字對數據進行排序,使在操作數據的過程中可以大大節省時間。Google公司將BigTable技術成功應用到Google Earth項目中使Google公司在云計算方面處于世界領先水平。姜棟瀚等對云計算過程中的相關關系與關鍵環節的國內外研究進行梳理總結,闡述了云計算在民用領域以及軍事領域上的重要意義,提出了一種新的云計算資源管理框架[69];云計算數據外包過程中,現有的解決方案不能應對第三方審計者(TPA)惡意違反審計協議的問題,提出了BLA-MHT以及BLA-2-3樹兩種新型動態數據結構,以在此基礎上提出了能夠應對任何不可信實體的遠程動態數據審計方案,此技術能夠有效解決該問題[70]。郭煜以可信計算技術與云計算環境相結合,對安全的存儲、訪問認證等過程提供了基礎支持,通過三層防護體系技術以及云計算安全管理的4個核心組件構建可信云體系結構,提高了云計算系統的安全性,保證了安全策略能夠快速、安全地下發[71]。曹晨磊從建立云實體具有可鑒別性的環簽名身份出發,對移動云系統的安全域進行合理的劃分,基于 HIBE 算法理論更深層次的劃分安全域的子域,建立層級化身份的密鑰協商協議,設計出基于身份的可撤銷匿名性環簽名方案[72]。黎明為解決云計算環境下通信開銷大,資源調度中易出現單點失效的問題,將并行遺傳退火算法進行改進并應用于多代理的云計算資源調度模型,并通過仿真實驗,證明了該技術的有效性[73]。
王清鑫針對云計算任務調度問題,提出了一種基于城市權重的蟻群算法,并在TSP環境下進行仿真,改進后的算法可以顯著提高收斂速度,并在此基礎上提出了果蠅蟻群融合算法,應用TSP問題進行驗證,在快速游動精度和速度上都得到了很大的提高[74]。針對傳統分析訓練數據集的方法不能有效解析負載序列的變化特點這一問題,李生提出了一種有小波包變換、正余混沌雙弦鯨魚優化算法和多層感知器神經組成的云計算資源負載預測模型,強化了人工鯨魚種群的信息交流,避免了種群個體陷入局部最優,同時也減少了尋優盲點,加快了收斂速度,提升了云計算資源負載預測模型的性能[75]。周作建以提高推薦準確率和降低數據稀疏性為研究目標,通過優化上下文感知、系統推薦技術,提出了基于動態協同過濾服務的推薦模型,并在此基礎上改進拓撲排序算法構建預測服務推薦體系結構,最終應用于移動云環境下的服務推薦方面[76]。Xiaobo Ji提出了基于云計算平臺資源監測的數據傳輸策略,分別是動態周期推送策略、基于窗口的事件驅動推送策略和基于窗口的混合推送策略,通過考慮資源狀態信息的變化程度,結合動態周期性推送策略和基于窗口的事件驅動推送策略以動態更新的動態時間間隔周期性地推送資源狀態信息,依據資源狀態信息的變化程度,通過使用指數加權移動平均值動態更新的閾值基于窗口的事件驅動推送策略推送資源狀態信息,進一步減少通信開銷并提高數據一致性[77]。實驗結果表明,基于窗口的混合推送策略在數據傳輸次數和數據一致性方面比以前的數據傳輸策略表現更好。張東波針對當前海量的交通數據處理面臨的問題,從大數據聚類算法、浮動車交通參數估計、交通狀態信息估計以及大規模交通路網的最短路徑誘導算法等方面進行研究,改進了k-means 聚類算法,解決了局部陷阱迭代次數增長較快和耗時增加等問題[78]。李妍針對國家電網終端管理的運維成本、能耗成本以及信息安全等方面的問題,基于當下流行的云存儲技術、云計算技術、結合虛擬化技術等進行設計,結合電力行業特點以及國家電網天津電力公司運行情況設計了基于云計算技術的電力系統虛擬辦公自動化系統,大大提升了員工的工作效率,節省了電力公司的運營成本[79]。鄭坤鋒針對信息資源組織、信息資源服務所面臨的任務進行分析,在內涵界定、需求分析、功能實現的基礎上構建了信息資源組織與服務云平臺模型,提出了促進平臺高效運行的運行機制[80]。古雄針對傳統實時報警系統耦合過于緊密、語音播報種類單一、災備能力較弱、短信報警方式缺失等問題,開發了一套SOA架構下基于云計算平臺的語音及短信實時報警系統。將實時報警作為一個獨立的功能模塊接入到調度自動化系統中,解決了傳統報警系統耦合度高,不利于系統維護升級的問題,通過語音與報警信息的同步技術,保證了報警信息與報警語音的同步精準播報[81]。周杰針對物流企業服務交易的信息安全、智能化和自動化問題,提出了物流區塊鏈、云物流區塊鏈的定義、物流區塊鏈云計算模型以及相關理論根據使用拜占庭算法的基本原理和物流區塊鏈云計算模型,提出了基于云計算的物流區塊鏈共識算法,在一定程度上解決了物流區塊鏈數據存儲安全信任問題[82]。李能能針對數據在傳輸過程中面臨著惡意攻擊的問題,提出了一種基于非對稱加密的Kerberos認證協議應用于客戶端與云服務端之間的解決方案,針對數據在存儲過程中頻發的由于密鑰被破解而導致的數據非法訪問的現象,提出了基于RSA加密技術一次一密加密的可信第三方平臺數據安全方案,大大降低了破解密鑰和非法訪問數據庫的可能性[83]。余盛季以提高云服務提供商的整體利益為研究方向,對于多用戶對關鍵資源的競爭引發資源沖突等問題,通過優化云環境下的自主調度體系架構,提出了云代理博弈模型以期降低用戶調度成本和云計算環境下任務調度所存在的問題[84]。姚虎通過研究對云任務高效調度,對簡單遺傳算法(SGA)進行了一系列的改進,如在選擇操作中引入平均適應度函數和隨機適應度函數,并引入交叉區域相似度與無性繁殖,重定義了交叉操作,增加了優秀個體數量,得到了IGA算法,提高了資源利用率和任務完成效率,節省了時間[85]。Yong Hu對云計算的數據處理和存儲特性進行了分析和研究,提出了一種基于服務器集群的選擇,從而完成具有負載均衡功能的空間數據存儲模型,具有一定的可行性和應用優勢[86]。徐華針對云計算中大數據處理虛擬集群調度、云環境中虛擬主機共存和異構性帶來的數據可靠性以及大數據系統處理的推測性等問題為研究中心,提出基于位置感知的啟發式調度算法優化大數據處理系統在云中的網路性能,優化數據塊的可靠性以及應用處理性能低的問題,并在此基礎上提出基于全局速度和局部速度相結合的方法挑選異常任務,以期降低任務的誤判所帶來的資源浪費情況[87]。
Ning Zhang針對在云計算平臺上機場監控多媒體視頻中特定人臉圖像的檢索過程中,由于人臉模式復雜易受干擾,采用傳統算法進行人臉檢索時,精度和效率降低的問題,提出了一種新的特定人臉圖像檢索算法,并將該方法部署到云計算平臺,利用Harr face級聯分類器檢測機場監控多媒體視頻中的人臉圖像,為了找出機場監控多媒體視頻中的人臉,采用塊匹配方法進行人臉跟蹤,得到視頻中的人臉。PCA方法用于提取特定的面部特征,并且判別分析方法用于將提取的特征信息與特定人臉進行比較,以實現特定的人臉圖像檢索,從而提高了檢索的效率和精度[88]。王樹蘭針對減少用戶端的存儲開銷和提高加解密效率的問題,提出了一種安全高效的文件分層CP-ABE方案、靈活的屬性表達CP-ABE方案、緊湊的外包解密CP-ABE方案、快速的外包CP-ABE方案,并針對共享文件具有多等級分層的特性,設計了訪問結構的分層模型,減少了密文的存儲開銷和加密時間開銷[89]。王繼業為云服務建立了一套自動化管理機制,并提供了一套統一的應用程序生命周期管理方法,以降低云應用程序部署和維護的復雜性,同時,動態遷移技術解決方案的設計提供靈活的云服務。同時,自動化管理,即完成自動化部署,監控和動態應用程序遷移設計,有效地幫助GIS運維管理人員快速實施部署計劃[90]。
云計算是一種新型的超級計算方式,它具有彈性的資源、無限的計算和存儲能力。作為用戶只需要根據自己所使用資源的情況進行付費即可。在本節中,結合我們的研究內容,重點針對虛擬化技術和分布式計算技術展開研究。
1.虛擬化技術
云計算中最關鍵的技術之一是虛擬化技術,它可以在一臺物理計算機上同時運行多個虛擬機,在這些虛擬機上可以運行不同的操作系統和應用程序,它們之間相互獨立,并且互不干擾。
目前,云計算中普遍使用的三種虛擬化技術是:VMware Infrastructure[92]、Xen[93]和KVM[94]。通過虛擬化技術,可以將服務器中的所有資源進行整合,從而形成資源池,用戶可以根據業務需求向云服務提供商租賃的服務即可,有利于降低IT成本并提高靈活性和可用性[13]。
VMware是虛擬化技術的代表,由它開發設計的VMware Infrastructure能創建自我優化的IT基礎架構。VMware Infrastructure作為一個虛擬數據中心操作系統,可以將離散的硬件資源統一起來,創建共享動態平臺,同時實現應用程序的內置可用性、安全性和可擴展性。Xen是由XenSource所管理的一個開源GPL項目。Xen是openSUSE和Novell主要支持的虛擬化技術,它能創建更多的虛擬機,每一個虛擬機都是運行在同一個操作系統上的實例。KVM是指基于Linux內核(Kernel-based)的虛擬機(Virtual Machine),是以色列的一個開源組織提出的一種新的虛擬機實現方案,也稱內核虛擬機[92~94]。
虛擬化技術面臨的主要問題有:①虛擬化程度—由于整個數據中心不是完全的虛擬化,因此,管理的復雜度勢必增加,既要管理虛擬環境,又要管理非虛擬化的環境,這讓IT人員深感頭疼;②跨平臺與兼容—從管理的角度來說,如何將企業或個人現有虛擬化環境與不同的云平臺解決方案進行跨平臺的無縫遷移與兼容,已經成為了用戶與企業選擇虛擬化技術最關鍵的問題;③使用標準—目前虛擬化技術的服務商層出不窮,但其解決方案差異很大,缺乏統一標準。
2.分布式計算技術
分布式計算是近年提出的一種新的計算方式,它的基本思想是用多個服務器同時協調來求解一個問題,即將一個大的科學計算問題進行劃分,分解為多個任務,再把分解后的計算任務分發給并行計算機的各個計算節點進行并發執行,其目的在于利用并發的特點來比較迅速地獲得原復雜問題的解。目前,開源的云計算系統有Hadoop[13,99~102]、OpenStack[95]、Eucalyptus[96]、Nimbus[97]、Sector and Sphere[98]等。其中,最著名的云計算開源系統是Hadoop,它是一個分布式計算架構,由Apache開源組織研制開發,基本思想來自Google云計算的核心技術。Hadoop可以由大量的廉價服務器構成,大大降低了其成本,它不僅具有很強的計算能力和存儲能力,而且還具有較好的可靠性和可擴展性[99]。作為Hadoop的使用者,可以在完全不了解該系統底層的前提下,進行分布式應用程序的開發工作。本章以Hadoop為例,重點介紹它的分布式計算技術。Hadoop的核心有:分布式文件系統(Hadoop Distributed File System,HDFS)、分布式計算模型 MapReduce 和分布式數據庫(Hadoop Database,HBase)[103~110]。
如圖2-5所示,Hadoop集群通常是由一個NameNode和多個DataNode構成,而這些DataNode可以由大量的廉價機構成,因此,Hadoop成本比較低。HDFS位于該系統的底部,負責存儲系統中的所有文件,并支持一次寫入,多次讀取[9]。而 MapReduce 引擎在HDFS的上一層,由JobTrackers和TaskTrackers組成[55]。HDFS最大的特點之一就是高容錯性,由于在HDFS中硬件出錯是常態而并非異常,因此,快速檢測系統的錯誤,并進行自動的恢復是 HDFS 最核心的設計目的。MapReduce 是一種分布式處理模型,我們可以利用它進行大規模數據集的并行運算工作[9,110]。本章將對HDFS、MapReduce和HBase做進一步介紹。
圖2-5 Hadoop集群圖
1)分布式文件系統HDFS
分布式文件系統 HDFS 是 Hadoop 的核心技術之一,也是分布式計算的存儲基礎,最大的特點就是高容錯性。另外,它的存儲能力也很強大,可以達到 TB 級,甚至 PB 級。HDFS 被部署在由廉價機構成的系統中,可以提供高吞吐率的數據讀寫操作。根據實際客戶量的需要,可以通過便捷地向系統中添加數據節點的方式來提高系統的服務性能,從而解決大量客戶同時并發訪問的問題。HDFS 是 GFS(Google File System,GFS)的開源實現,圖2-6所示的是HDFS的架構圖。從圖中我們可以發現,HDFS是一個典型的主從式結構,即由唯一的一個NameNode和多個DataNode構成,其中,NameNode是主節點,也是該系統的主控服務器,主要工作是管理該文件系統的元數據,即維護文件系統的命名空間,系統內的所有變化都要被記錄下來,另外,NameNode負責的工作主要有:①做好系統與客戶之間的橋梁,協調客戶端對文件的訪問;②記錄命名空間內的所有變化;③記錄所有文件的不同數據塊及副本的相關信息,包括數據塊的大小、位置、副本個數等[9,110]。
圖2-6 HDFS的架構圖
雖然客戶端是通過聯系NameNode來獲取文件的元數據的,但是文件真正的輸入和輸出工作是由DataNode負責完成的。DataNode主要負責存儲實際的數據,在HDFS中,每一個文件都被劃分成大小相同的數據塊(通常是以64MB或128MB為塊大小,但可以根據用戶需要自己定義),并按照一定的部署原則,被分配到系統中的 DataNode 中,并且DataNode會周期性地向NameNode發送所存儲的數據塊的列表[104~106]。
在 Hadoop 系統中,只有一個 NameNode 在很大程度上簡化了系統架構,并且由于元數據設計得非常緊湊,因此,4GB內存的NameNode便可以輕松完成大量的文件和目錄的處理工作。HDFS采用“一次寫入,多次讀取”的方式,DataNode的主要工作是負責響應客戶的請求,按照NameNode的命令完成相應的任務,而NameNode并不參與文件的傳輸工作。為了保障系統的可靠性和提高系統性能,HDFS采取了以下幾個措施:
(1)冗余備份。在HDFS中,每一個文件都按照相同的大小劃分成不同的數據塊(關于數據塊的大小,用戶可以自己配置,最后一個數據塊可能會小于指定數據塊大小),并分布在不同的DataNode中存儲。其中,只有每個數據塊都有效,才能保證整個文件的完整性。為了提高系統的容錯能力,我們通常采用數據塊的冗余備份機制來保證數據塊的可靠性,在系統中,副本數量也稱為復制因子,其值也可以由用戶自己定義。
(2)副本部署。大型HDFS集群一般都是由多個機架構成的。不同機架上的機器是通過交換機進行通信的。一般情況下,同一個機架內的節點之間的帶寬比不同機架節點之間的帶寬大很多,所以HDFS中的三個副本部署情況如圖2-7所示。第一個副本存放在本地機架的一個節點中,第二個副本存放在遠程機架的一個節點中,最后一個副本放在同一個遠程機架中的不同節點中。機架的出錯率比節點的出錯率低很多,該策略可以防止由于整個機架出錯而造成的數據丟失,可以在不影響數據的可靠性和可用性的情況下,保證系統性能。
圖2-7 數據塊部署情況
(3)心跳檢測。心跳檢測是NameNode為了判斷所有的DataNode是否處于正常工作狀態而采取的一種有效手段。正常情況下,所有的DataNode會定期地向NameNode發送自己的心跳包和塊報告,以證明自己的存在。如果在一段有效時間內,NameNode始終沒有接收到任何心跳信息,則認為該DataNode為死機,以后就不會再給該DataNode發送任何新的任務請求。但是,存儲在死機上的所有數據將失效,NameNode會根據系統需要進行相應的數據恢復工作,從而也有效地保證了系統的可靠性。
(4)安全模式。安全模式是在啟動系統后,NameNode首先進入的一種狀態,在這種模式下,不會出現任何數據塊的寫工作,相當于系統的一個自檢過程。NameNode會根據來自DataNode的各個方面的信息來判斷系統中的數據塊是否處于安全狀態。當數據塊的副本數量滿足最低副本因子時,該數據塊就被確認為安全,否則要復制該數據塊,并部署到其他DataNode中,以達到最低副本量。當完成了數據塊安全確認工作之后,系統會自動退出安全模式,進入正常工作狀態。
(5)數據完整性檢測。很多情況都會造成數據塊的損壞,從而破壞了數據的完整性,一個最常見的例子就是DataNode死機。在系統中,HDFS具有文件內容的校驗和檢查功能,可以在文件被創建時,就計算出每個數據塊的校驗和,并把它作為隱藏文件保存在命名空間中。當從客戶端獲取文件后,它會自動比較從DataNode中所獲得的數據塊對應的校驗和是否與存放在命名空間中的校驗和相同,如果不同,則認為數據塊存在丟失,需要從其他DataNode中獲得該數據塊的副本。
(6)副本選擇。當HDFS執行一個讀操作的時候,系統會自動采用距離最短原則進行副本的選擇,這樣可以最大程度地降低全局的帶寬消耗讀延遲。例如,若同一個機架上有該讀節點的副本,那么直接讀取該副本就行;若HDFS集群來自不同的數據中心,那么存儲在本地數據中心的副本顯然優先于遠程副本。采取該策略,可以有效地提升系統的性能。
云存儲面臨的主要問題有:①安全性—目前,很多企業不愿意將業務數據放在公有云上,主要從數據安全性的角度考慮,許多企業客戶,甚至個人使用者都認為提供核心業務數據是存在一定風險的;②缺乏統一的標準—把云存儲的數據取回或轉移到另一個供應商,對跨行業來說沒有一個通用的標準;當前云存儲互操作性與協同管理的最重要且急迫的工作,莫過于統一標準接口的制定。
2)分布式計算模型MapReduce
在解決大數據處理的問題上,Hadoop的MapReduce起到了關鍵性作用,實際上,它是Google 的 MapReduce 的開源實現,所有人都可以利用 MapReduce 進行并行編程[55]。MapReduce是一種分布式計算模型,屬于Hadoop的核心,利用這個模型,我們可以很容易地實現分布式并行程序的編寫工作。在進行并行運算的整個過程中,可以抽象為兩個階段,也是兩個函數,分別是Map和Reduce,即映射階段和化簡階段[97,111]。剖析MapReduce解決問題的基本過程可以理解為:將一個任務分解成多個子任務,并分別進行處理,最后將所有子任務的處理結果進行有效匯總,得到最終結果的過程。其中,Map是把任務進行分解的階段,而Reduce就是將所有子任務的處理結果按照一定的規則進行化簡、歸并,從而得到最終結果的階段。實際上,在數據處理算法的復雜性上,MapReduce并沒有使其減少,它是將任務通過分解,之后再進行合并,從而進行分布式并行處理,我們可以理解為:以前解決這個任務需要一臺具有超級計算能力的計算機才可以完成,但現在通過MapReduce 可以將多臺普通計算機組合起來,形成一個具有超級計算能力和處理能力的集群[112~117]。
MapReduce 編程模式是 Google 公司的工程師于2004年在一篇相關論文中首次提到的,引起了業界的廣泛關注。由于MapReduce為程序員提供了很好的抽象編程接口,因此,作為當前一種非常流行的并行計算模型被很多用戶所使用[118~127]。圖2-8是MapReduce的概念模型,從中我們可以看出,首先,系統將大數據分解成若干個大小相等的數據塊(Data1,Data2,…),并按照一定的規則分配到不同的節點中處理,當所有的數據塊都被處理之后,再按照一定的原則將所有的處理結果進行匯總,最后將結果輸出。另外,系統會自動管理集群中節點之間的通信[119]。作為程序員只需要明確自己的業務需求,就可以利用MapReduce框架編寫Map函數和Reduce函數,并不需要過多地考慮任務的分配、資源的調度以及容錯等問題[128~132]。
圖2-8 MapReduce的概念模型
圖2-9介紹了MapReduce處理數據的過程,從中我們看到整個過程可以分為兩個階段,分別是映射階段(Map函數)和化簡階段(Reduce函數)。在映射階段,首先將用戶輸入的數據分解成M個分段(分段0,分段1,…,分段M?1),相當于把一個大任務劃分成了M個子任務,即M個Map任務,每一個分段都有自己的關鍵字Key和值Value,即鍵值對<Key,Value>。其次,針對每一個Map操作,輸入該片段的鍵值對,其中調用的Map函數是用戶根據實際需要編寫的Map函數。最后,輸出的結果是一個中間態的鍵值對,并按照中間態的關鍵字 Key 進行排序,這樣就可以使具有相同關鍵字的數據集中在一起,根據不同中間態關鍵字的個數來作為Reduce任務的數目。在簡化階段,Reduce操作會調用用戶根據實際需要編寫的Reduce函數,最終得到用戶需要的鍵值對,并作為結果輸出[133~141]。
圖2-9 MapReduce處理數據的流程圖
3)分布式數據庫HBase
HBase數據庫是基于Hadoop的項目,是對Google的Bigtable的開源實現,即HBase的數據存放邏輯模型與Bigtable是一樣的,HBase中的表就是所謂的Bigtable。用戶在表格里存儲一系列的數據行,每行包含一個可排序的行關鍵字、一個可選的時間戳以及一些可能有數據的列。數據行有三種基本類型的定義:行關鍵字(Row Key)、時間戳(Time Stamp)和列(Column)。HBase在磁盤上按照列族存儲數據,一個列族里的所有項有相同的讀/寫方式。HBase 與一般的關系數據庫的不同之處在于:①HBase 是一個適合于結構化和非結構化數據存儲的數據庫;②HBase是基于列的而不是基于行的模式。HBase不支持SQL,它實質上是一張極大的、非常稀疏的存儲在分布式文件系統上的表[13]。
2.3 云計算環境下的數據管理與任務調度存在的問題
當前,Internet、移動互聯網、物聯網、云計算都得到了迅速的發展,尤其是移動智能終端的飛速普及,我們所產生的數據量比之前的任何一個時期都要多,并且速度是驚人的。換句話說,“大數據”時代已經真真實實地到來了,圖2-10所示的是IDC數字宇宙研究對未來全球的數據量增長預測,從中我們可以看到,在未來的2020年,全球數據量可能會突破35ZB[58]。由于云計算的分布式架構不僅可以滿足大數據的存儲和處理分析請求,而且能夠把大量的計算任務有效地分布在由很多計算機構成的資源池中,用戶只要根據自己的需要向云服務提供商租賃相應的計算、存儲,以及信息服務等服務即可。從2.2.3節的云計算的優勢分析中我們可以看到,采用云計算技術處理大數據是經濟實惠和可行的。作為信息技術的又一次變革,云計算和大數據的結合是一個必然趨勢,它們正在給人類的技術進步和社會發展帶來全新的方向[5]。
圖2-10 全球數據量增長預測(單位:ZB)
2.3.1 數據管理
在云計算數據查詢安全問題上,由于用戶過度的訪問和檢索過程易造成數據的泄露,邢文凱通過相似子圖和哈希函數的方法構建圖狀部署提高了用戶查詢的效率和查詢的安全性[142]。
彭延國則通過建立無證書公鑰密碼系統的關鍵詞可搜索加密系統,解決了公鑰的關鍵詞可搜索加密存在的密鑰托管問題,并通過哈希算法、K-D 樹降低通信開銷,依據加法保序表、乘法保續表等設計了同態保序加密方案,從而實現了度量機制的密文計算提高查詢過程的有效性和安全性[143]。
王于丁等人為了使云計算用戶訪問的安全高效,對加密體系用CP-ABE算法進行改進,以權限控制理論控制數據的訪問[144]。楊挺等對于HDFS在存儲過程中,未對數據間的差異性和使用頻度進行綜合考慮,其統一地將數據進行復制備份,增加了對DataNode節點的占用,使存儲壓力增大,通過螢火蟲算法對分布式文件存儲超圖模型進行求解,從而合理地對 DataNode 節點進行分配,降低了 HDFS 的集群能耗,減少了網絡傳輸擁堵時間[145]。
涂俊英通過分析傳統的存儲非結構化數據的方法,針對數據存儲過程中易丟失的問題,通過負載均衡控制方法對HBase非結構化數據的存儲架構進行改進,并提出了壓縮冗余數據特征及信息存儲的優化算法[146]。
張華麗等對冗余數據片段分配過程應用遺傳算法進行求解,合理地解決了傳統支持向量機在數據分配過程中出現冗余數據關聯性低的問題,對大數據分布式存儲中冗余度分類,構建評估準則,優化分配策略,提高了冗余數據的分配,也提高了分配效率和準確率[147]。
Misbah Liaqat等人設想利用聯合資源提高服務質量,討論了云環境中聯合資源的管理,提供了最新的研究見解[148]。
Janez Kranjc等人基于云的Web使用MapReduce的數據挖掘軟件ClowdFlows,在大數據的處理上具有顯著的優越性[149]。
Faheem Zafar 等人提出了用于云存儲的現有數據完整性方案的分類,還提供了對現有方案的比較分析,并詳細討論了可能的安全攻擊及其緩解措施[150]。
AbdulsAlam Yassine 等人提出用霧計算節點和云系統來實現數據驅動的服務從而提高云計算的實用性[151]。
Maozhu Jin等為改進和優化海量數據分析,提出了縮減相鄰頂點相似度計算以及不準確計算相鄰點的方法以約簡GXDSGC算法的復雜度,并提出了基于GraphX結構化圖類算法GXDSGC,以期提高云計算在大數據環境下的運行速率[152]。
包笠從云環境下數據管理的安全問題出發,依據用戶的隱私需求將云端數據切割分組處理,構建一種新的混合云存儲方案,通過加密、信息分散算法將用戶數據混淆后存放內部組織數據庫,實現元數據與內容的分離[153]。
高崑等分析了GIS數據在云平臺上存儲的優點與難點,基于Hadoop論述GIS數據的存儲和管理,分析了GIS數據的特性,通過建立索引的方式應用Hbase存儲影像數據,并提高了管理效率,同時利用SquenceFile工具以及Hilbert算法對瓦片數據進行分割與數據編碼,提高了瓦片數據的查詢效率[154]。
陳玉林分析了傳統的云平臺數據存儲技術在遙感數據存儲上的不足,以特征分析與聚類的方式,依據分布式環境虛擬話存儲技術對數據進行模型構建,完善了云平臺對遙感數據存儲的支持,同時將蟻群算法應用于遙感數據的任務調度,設計了云平臺任務調度算法,提高了系統平臺處理效率[155]。
重復數據刪除存儲證明(POSD)是一種很有前途的解決方案,可解決啟用了重復數據刪除的云存儲系統的問題,當前POSD方案的有效性基于強有力的假設,即所有客戶在生成密鑰方面都是誠實的,Youngjoo Shin等提出了惡意客戶利用不誠實操縱密鑰的新攻擊模型下的不安全性,并提出了一種改進的POSD方案來減輕攻擊[156]。
目前,我們處于大數據的時代,數據的增長速度已經呈現出了指數型增長的趨勢,通過處理大數據,我們最終的目標就是希望從中獲得有價值的信息,可以對我們的未來決策起到一定的指導作用。從圖2-1中我們可以看到,數據相關技術主要包括:數據采集、數據存儲、數據管理、數據分析與挖掘,其中,數據存儲、數據管理,以及數據分析與挖掘是核心內容[157]。當前,數據的來源有很多,主要包括:物聯網、互聯網、移動互聯網、GPS、車聯網、電信、安全監控、科研機構等。這些數據造成了今天結構化數據、非結構化數據和半結構化數據的爆炸式產生。這些數據需要通過運營商或應用提供方收集起來,把它們部署在大量的存儲設備中,并對這些數據進行有效的管理,最終對數據進行讀寫操作、分析與挖掘等[96,102,158,159]。
近年來,隨著Web 2.0技術的迅猛發展,傳統用戶從數據的消費者已經變為了數據的生產者,這種以用戶為中心的數據生成模式使得互聯網中的數據量呈現出指數級增長的趨勢,給云計算系統的管理帶來了嚴峻的挑戰。大數據的特點決定了存儲架構的復雜性[60-67,139-141],針對大數據處理的一般流程,這里提出了大數據存儲和處理的系統級架構,如圖2-11所示。
圖2-11 大數據存儲和處理的系統級架構
從圖2-11中我們可以看出,整個架構可以提供的服務包括:數據采集服務、數據清洗分類服務、多維特征提取服務、物理數據存儲服務、元數據管理服務、業務處理服務、數據分析服務、日志分析服務和集群監控服務。另外,我們也可以發現,整個架構屬于分層設計結構,主要分成4層,分別是數據采集層、數據預處理層、數據存儲與管理層、數據應用層。利用云計算對數據進行存儲和管理是我們的研究重點。
在大數據被采集的整個過程中,我們面臨的主要挑戰就是任務的并發數高,原因是在同一個時間段內,可能會有數以萬計,甚至千萬計的客戶蜂擁而至對數據進行操作。例如:在“雙十一”期間,淘寶商城和天貓商城會舉辦一年一度的超級優惠活動,勢必會吸引很多客戶大量的購買產品。在那一天內,數據采集端必須準備大量的數據存儲設備才可以支撐整個業務。再例如:全國火車票售票網站,在每年的出行高峰期,尤其是春節前后,造成網絡和系統的癱瘓也時有發生。關于這些數據的存儲以及整個系統的負載情況是我們必須要深入思考的問題。
由于數據類型的多樣性和復雜性,因此,來自采集端的不同數據庫的數據必須被導入到一個集中式的大規模分布式存儲集群中,才可以對這些數據進行有效的分析。在導入的過程中,可以根據需要有針對性地對數據進行一定的預處理工作。在數據的導入和預處理階段,我們面臨的主要問題是數據量的巨大性,每秒鐘數據的導入量可以達到百兆、千兆級。如何有效地進行數據的導入也是值得我們考慮的問題。
數據挖掘是在大量數據中發現有價值的信息,從而對未來的發展趨勢起到預測的效果,并滿足一些潛在數據分析的需求。目前的挖掘算法主要存在的問題是算法的計算復雜度過高,并且計算的數據量和計算量也都很大。
數據存儲與管理是本書研究的主要問題之一。解決大數據的存儲問題,一般根據業務需要采用分布式數據庫或分布式集群,對數據進行存儲和管理。通常業務需求可以分為兩類:實時性處理和批處理。針對實時性要求高的業務,一般要求掌握 Oracle 的 Exadata、EMC的GreenPlum,以及采用以列為存儲的工具等;而針對批處理業務,可以采用Hadoop來實現。
在數據存儲與管理中,我們面臨的主要挑戰是:
(1)由于數據量巨大,因此對整個系統資源的要求極高,并且對整個系統的 I/O 設備也提出了很大的挑戰。
(2)一般情況下,為了提高系統的可靠性,通常采用副本機制來解決,那么關于副本數量、副本部署,以及副本一致性問題也是我們亟待解決的問題。
(3)在數據存儲過程中,關于整個系統的負載情況、服務成本以及服務質量等問題也是我們所關注的。
(4)由于Hadoop的文件管理系統適合一次寫入、多次讀取的場景,并不支持數據的修改,因此,從某種角度考慮,它是通過弱化數據的一致性,來達到訪問效率優化的目的的。如何改進Hadoop的架構設計,也是我們的挑戰之一。目前,針對這些問題的研究已經成為該領域的研究熱點,并已取得了一定的商業價值和學術成果。
2.3.2 任務調度
云計算環境下任務的合理調度以及資源的高效利用,對用戶的使用和數據的處理存儲有著重要的作用。國內外學者在此問題上主要從算法的改進、優化和資源與任務需求相匹配等方面進行研究。
馬紅娟等對于實時并行任務子任務的子截止時間如何分配問題,提出了實時并行任務調度算法 SARR,其滿足并行任務完成時間要求的同時增加子任務執行安全級別的安全感知[160]。
為了應對低延遲需求的應急響應通過將云計算服務擴展到邊緣及霧計算,而傳統的遺傳算法在變異操作的過程中具有盲目性,任務執行速度慢,韓奎奎等人將適應度判別引入到霧計算秦代變異操作中,有效地提高了任務的執行速率[161]。
李昆侖等人為了有效地降低遺傳算法在云任務調度過程中的成本,提出一種基于聚類改進的共生演算法。相比改進的遺傳算法、混合粒子群遺傳算法,其具有更高的可行性[162]。
任金霞等人以提高資源負載的均衡性為目標,對貪婪算法策略引入Qos約束獲得初始解,并通過實行兩階段的退火過程,降低任務完成時間和減少最小負載均衡的標準差,使得任務調度過程中始終在用火滿意的前提下尋得最優方案[163]。
王鑫等人從改進任務與資源的調度關系出發,提出了改進任務調度貪婪算法策略,有效促進任務與資源的合理匹配[164]。
張晞通過協調虛擬機處理性能與虛擬機之間的拓撲距離的關系,以虛擬拓撲結構為基礎,建立虛擬機任務適應度評價函數,對云計算任務調度過程中虛擬機的拓撲結構進行了優化[165]。
劉東領等人對于順序調度和聚類調度任務執行時間長的問題,提出了一種基于資源與任務的多樣性、異構型的等價類劃分的粗粒度調度算法,其與貪心算法相結合,匹配適應資源與同等需求的任務,有效降低了任務執行調度的總時間[166]。
鄧見光等人將多目標的QoS目標約束問題在考慮云調度預算、截止時間的前提下,轉化為單目標約束優化問題,從而對其求近似解,給出了一種合理的QoS目標約束的云計算調度策略[167]。
Mahendra Bhatu Gawali等人提出一種啟發式的算法,結合改進層次分析法,帶寬感知可分割調度分而治之的方法來執行任務調度和資源分配[168]。
Balamurugan Balusamy考慮云計算中調度任務和恢復資源的優化,并基于VM上的搶先式任務和非搶先式任務的工作負載平衡問題,提出基于蟻群負載均衡和故障恢復(ACBLBR)的算法,實現跨VM的均衡負載[169]。
孫敏等人基于遺傳與粒子群算法相融合的目標任務調度策略,該算法在任務調度中的執行效率、尋優能力均有提高[170]。
李延元等人以資源方與用戶方的QoS需求能耗均衡為研究方向,提出一種降低任務的子執行任務截止時間和能耗的工作流能效調度算法 QCWES,同時降低了云計算環境下的工作流調度的執行能耗問題[171]。
陳暄等人在云計算任務調度過程中應用 IFWA-ABC 算法,對柯西分布與混沌反向學習,核心煙花與非核心煙花半徑分別進行優化,有效地提高了資源在任務調度過程中的利用率,減少了用戶的等待時間[172]。
SuKhpal Singh等人根據分配的權重及其QoS要求,通過K-means識別,分析和聚類云工作負載,與現有算法相比在能耗上更低[173]。
Jun wu Zhu等將復雜的任務劃分為多個子任務,然后以形式化的方式呈現子任務調度問題,其次,提出了一種包含任務調度機制、優勝者聯盟形成機制和支付共享機制的實用任務調度方案[174]。
Hend Gamal EI Din Hassan Ali等提出了一種分組任務調度(GTS)算法,該算法用于通過應用服務質量來滿足用戶需求,在云計算網絡中調度任務。
Leila Ismail推導出一種能量感知任務調度(EATS)模型,該模型在云中劃分和調度大數據,EATS的主要目標是提高應用效率并降低底層資源的能耗[175]。
Shima Rashidi等提出了一種混合遺傳算法(GA)—蟻群優化(ACO)算法,以最小化整個系統的任務分配的平均完成時間[176]。
Sucha Smanchat 等人從調度過程和資源任務分配上對現有的算法進行分類,為后來研究者提供了參考[177]。
Sanjaya Kumar Panda將匈牙利算法應用于云計算任務調度上,將任務配對以進行調度決策[178]。
Javier Panadero 等人對于組成云計算系統的節點為大量用戶而非單個機構提供,具有不穩定性的問題,提出了多準則偏差隨機化(MCBR)算法,其基于多標準優化策略,在降低計算能力的基礎上提高大規模不可靠節點的選則,并通過仿真實驗證明其有效性[179]。
Keke Gai等人以節能為研究點,分析了任務分配不合理對遠程云計算服務器及異構核心處理器帶來的能源浪費問題,提出了基于異構任務分配算法(HTA2)的能量感知異構云管理模型(EA-HCM),降低了計算成本[180]。
Rakesh Kumar等人分析了現有的云中心框架結構,對現有框架中缺乏移動設備執行任務的反饋機制,以及沒有可用的方法獲取移動設備的動態參數和根服務器無法決定云端cloudlet系統規模的擴大和縮小等問題,考慮將移動設備發送的反饋存儲于云服務器中的根服務器的維護目錄中,通過Gabriel架構及人群感知框架組合,提出了收益因子度量機制,有效地處理處理本地感測信息,并將處理結構信息傳遞服務器進行決策,通過收益因子值度量,根服務器可以準確地解決云計算系統的擴大與縮小問題,并在 Cloundsim 模擬器上對該改進策略與移動運中心系統框架進行比較,提出了可擴展參數模型,該模型優于原有框架[181]。網絡物理系統(CPS)架構為云計算提供實時的可擴展的資源監控,其可擴展性和靈活性對用戶帶來了極大便利,數據中心虛擬機(VM)布局算法的性能極大地影響了CPS的云服務質量以及應用程序與物理資源的分配,而傳統的VM算法建立在雙層架構之上,無法準確地量化VM在運行時所需的不同數量的計算資源,這種架構不再適用現代云計算模式,Yunliang Chen等人基于LP的變體生成最小化能耗VM架構,并將其與可行性驅動的隨機VM算法(FDSP)相結合,通過實驗證明基于LP的變異無意識VM算法有效地降低了能耗[182]。
粒子群算法(PSO)是解決云環境下任務調度的重要智能算法,王晴等人以減少執行時間和降低代價消耗為研究點,對于粒子群算法和自適應慣性權重粒子群算法易陷入局部最優問題進行研究,提出了將慣性權重與隨機因子相融合,以執行任務時間和代價為目標的增強粒子群算法(EPSO),并將其與原有算法相比較,調度方案更優[183]。任務調度作為NP問題,其求解對于云資源的異構和動態特性非常重要,Mohammed Abdullahi等人基于模擬退火(SA)原理的 SOS 云計算任務調度算法,以其強大的全局搜索能力優化任務調度、收斂速度和質量,并通過自適應函數降低虛擬機之間的不平衡程度,仿真實驗表明SASOS性能優于原有SOS算法[184]。
傳統的啟發式算法在 NP 完全問題處理上效率不高,任務調度算法多集中于混合元啟發式算法上,Amin Kamalinia基于混合元啟發式方法提出了HEFT算法,其在執行時間和效率優于遺傳算法[185]。Zhiqiang Xie等人基于任務節點的約束關系的構建優先級值列表,依據欲調度任務節點的動態基本路徑計劃成本、通信成本,提出動態基本長路徑策略,并通過 Matlab 工具仿真證明了其有效性[186]。AR Arunarani 等人對云計算任務調度策略和適用于云計算環境的相關指標進行了全面的調查,討論相關問題,以方法、應用和基于參數的措施研究了獨特的調度程序[187]。Jiachen Yang等人將博弈論作為數學工具,提出了平衡任務可靠性的任務調度算法,依據合作博弈論模型用于計算節點上的速率分配策略,并通過實驗證明該算法具有較好的優化效果[188]。Chuge Wu等人以有效的最小化時間和能量消耗為目標,構建了多模型分布估計(mEDA)算法,來確定任務處理排列和電壓供應水平(VSL),增強數據的多樣性非主導的解決方案[189]。Fredy Juarez等人對于云計算任務調度的NP難題,提出一種多項式時間算法,結合了一套啟發式規則和資源分配技術,以便在經濟實惠的時間尺度上獲得良好的解決方案,所提出的算法最小化了多目標函數,其根據資源提供者或用戶提供的能量-性能重要性因子組合能量消耗和執行時間,以在分布式平臺上有效地執行基于任務的應用程序,以最大限度降低能耗[190]。
引力搜索算法(GSA)是一種自然啟發的元啟發式優化技術,用于解決云計算環境中的負載調度問題,Divya Chaudhary等人基于引力搜索提出一種近似最優的Cloudy-GSA負載調度算法,用于最小化傳輸時間和云任務調度到VM所產生的總成本[191]。Hend Gamal El Din Hassan Ali等人依據用戶類型、任務類型、任務大小和任務延遲等屬性構建一種分組任務調度算法(GTS),并通過分步分級的策略對任務按照優先級執行,以期執行任務時間最少[192]。
任務初始分配合適的VM對于有效的利用資源有著重要的作用,D.Chitra Devi等人通過分析VM執行任務的特征,提出了通過靜態或動態調度對每個請求的作業的任務長度以及多個任務的相互依賴性來介紹和評估所提出的調度和負載平衡算法,將任務分配給適當的資源來管理參與執行,使云計算更有效[193]。Xing Liu等人研究了移動應用程序的MD和云端之間的協作任務執行關系,假設移動應用程序由一系列彼此獨立的任務組成,并且可以在MD上執行或者在云端,以通過將移動應用程序的一部分任務加載到云端為目標,在滿足執行時間的同時最大限度地降低MD的能耗,并將此協作任務執行問題轉換為能量優化問題,通過表征最優解來推導出閾值,并為協同任務執行基于拉格朗日對偶原理提出了一種協同任務執行調度(CTES)算法來近似解決優化問題,仿真結果表明,提出的CTES算法對于MCC環境節約能耗,與本地執行和云執行相比,CTES算法可以顯著節省MD上的能量消耗[194]。
移動設備之間協調任務卸載并同時快速卸載結果是一個具有挑戰性的問題,Zhikai Kuang等人提出了一個基于代理的MCC框架,通過對代理進行卸載決策,使設備能夠更快地接收卸載結果,提出了一種動態編程后濾波(DPAF)算法以解決優化問題,通過代理上的過濾過程將原始卸載問題轉換為經典的0-1背包問題,采用動態規劃算法來尋找最優的卸載策略,仿真結果表明,該框架可以比其他方案更快地獲得代理響應,DPAF算法在節能方面優于其他解決方案[195]。
傳統技術和新興方法進行融合,以填補用戶需求和移動設備有限功能之間的這種差距,Bowen Zhou 等人通過將移動設備計算和存儲外包給更強大的計算資源的計算范例和解決方案以期提高移動設備的性能,以便增強移動設備的計算能力和能量效率,采用增強技術異構和間歇性移動云計算環境為計算管理,能效和系統可靠性帶來了新的機遇[196]。
對于目前的大多數研究工作都集中在如何設計有效的卸載系統以節省時間和能源,同時對啟用技術給予考慮,Fei Gu等人對卸載框架中的不同計算資源進行研究,介紹了先進的使能技術和用于分區和卸載的不同計算資源,從分區和卸載啟用技術的角度研究移動云計算和相關范例,提出了分區和卸載技術的分類,并分析現有的成熟卸載框架[197]。
為克服SMD仍然受到低帶寬、處理潛力、存儲容量和電池壽命的限制問題,Muhammad Shiraz 等人利用豐富的資源和強大的計算云來實現 SMD 上的密集型應用,在移動云計算(MCC)中,利用計算云的應用程序處理服務來減輕SMD中的資源限制,為MCC中的密集型應用提出了一種新穎的分布式和彈性應用處理(DEAP)模型,并通過分析模型來評估提出的DEAP模型,在真實MCC環境中測試原型應用程序,以證明DEAP模型的有用性,使用DEAP模型的計算卸載可最大限度地減少密集移動應用程序的分布式處理中SMD上的資源利用率[198]。
為了增強調度過程,K.Pradeep等人提出將布谷鳥搜索(CS)、和聲搜索(HS)算法和CHSA混合,以改善優化問題,有效地結合起來進行智能流程調度,將CHSA算法的性能與不同的算法進行了比較,如現有的混合布谷鳥重力搜索算法,具有各種多目標參數的單獨CS和HS算法。CHSA算法與現有技術相比,可以實現最低成本,最小內存使用,最小能耗,最小懲罰和最大信用[199]。Madhu Sudan Kumar等人提出了一種工作流調度算法,稱為粒度分數調度(GSS),它基于給定工作流中任務的粒度,主要目標是最小化完工時間并最大化平均虛擬機利用率,包括得分調整和任務排序和調度,該算法在完工時間和平均虛擬機利用率方面顯著地展示了其性能[200]。
根據用戶的請求執行提供者VM的分配,Seyedeh Aso Tafsiri等人提出的分配問題被公式化為整數線性規劃模型,以期最大化用戶和提供者的總利潤,并證明了所提出的模型滿足了所需的性質,包括真實性、公平性、經濟效率和分配效率,還提出了一種具有準線性時間復雜度的啟發式資源分配算法,通過評估結果證實了啟發式算法與優化模型在分配性能方面的良好一致性,使用CloudSim的仿真結果表明,與現有算法相比增加了提供者和用戶的利潤,減少了資源浪費[201]。
目前,云計算利用率很高,成功案例也不少。對于云服務提供商來說,以最小的成本贏得最大的利潤是他們追求的目標。而作為終端用戶來說,以最低的租賃價格贏得最優的服務質量是他們的目標[139,202~214]。但是如何設定恰當的價格,另外,針對云系統中的所有資源,如何高效地進行任務調度,用以最大化雙方各自的利益是本書研究的熱點問題[215-235]。傳統的任務調度方法已經不再適合現在的云計算環境,對于不同的云框架和不同的云服務提供商,任務調度方法有很多,在本章中,我們重點介紹Hadoop 集群中最常用的三種任務調度策略,它們分別是FIFO策略、公平調度策略和計算能力調度策略[13,109-110]。
1.先來先服務策略(FIFO)
在默認情況下,Hadoop通常采用的是先來先服務策略(First In First Out,FIFO)。該策略的優點是簡單和開銷低,同時也減輕了jobtracker的負擔。它解決問題的基本思想是:把終端客戶提交的所有任務,按照提交作業的時間排成一個隊列,對于該作業隊列的執行順序一般都是按照優先級和提交順序來確定的,即系統默認先提交的作業具有較高的優先級,并將會被較早地處理。但是FIFO策略的缺點是存在不公平的現象。根據這種策略的解決思路,那么對于那些優先級不高的作業將大大地減少了被處理的機會,等待空閑機的時間會特別長,即針對優先級不高的作業,很難保證它們的服務質量。該策略缺乏對作業需求差異的考慮。
2.公平調度策略
隨著時間的移動,為了使所有的作業都可以得到相應的資源,提高整個系統的公平性,Facebook提出了公平調度策略。該策略可以在較短的時間內,完成所有作業的處理,避免長時間的等待。公平調度策略的主要解決思路是:盡可能地使所有的作業都得到等量的資源。當整個系統中只有一個作業執行的時候,系統將把所有的資源都提供給該作業使用。當再有其他的作業被提交的時候,系統就會釋放TaskTracker,并把它分配給這個新提交的作業,從而保證所有的作業都可以獲得基本相等的計算資源。
FIFO策略是在每一個時刻,只有一個作業被執行,而公平調度策略則是在同一個時刻,有多個作業同時被運行。公平調度策略適合于多用戶共享集群的環境,其吞吐率高于FIFO。
3.計算能力調度策略
計算能力調度策略是以隊列為單位來分配TaskTracker的,該策略配置了多個隊列,而每個隊列的最小額度的TaskTracker數量也被配置。在一個隊列中,如果有空閑的TaskTracker,那么這些空閑的TaskTracker會被調度器分配給需要的隊列。此時,可能存在多個隊列沒有得到最小額度的TaskTracker數量,并且正在申請,那么空閑的TaskTracker會被優先分配到最饑餓的隊列。我們通過計算隊列中正在執行的任務數與所得的計算資源之間的比值是否最低來衡量它們的饑餓程度,其值越低表明該隊列的饑餓程度越高。
在計算能力調度策略中,一個用戶的作業可能存在于多個隊列中,假設我們不對用戶做一定的限制,那么在多個用戶之間出現嚴重不公平的現象就很容易發生。因此,如果作業所屬的用戶超過了資源的限制,那么該作業將不會被選中執行。
在本書中,我們重點考慮了影響系統性能和服務質量的主要因素,并對任務調度的優化策略進行研究。
2.3.3 容錯機制
伴隨云計算的快速發展,越來越多的企業開始將云計算應用到生產和研究中,同時隨著節點的增多,故障率也隨之增多,如何有效地降低任務調度及數據存儲過程中的事故率,成為業界和學界研究的熱點問題。
陳超對于 Spark 在重新計算丟失數據,在長任務場景計算中存在計算恢復事件過長的問題,提出一種基于補償函數的樂觀容錯機制,以此機制對 Spark 的容錯機制進行優化,降低了容錯過程中的額外開銷[236]。
丁凱通過分析Hadoop源碼中MapReduce容錯機制的不足,針對不足設計并實現了檢查點容錯機制[237]。
英昌甜等人為了有效地降低作業恢復開銷,提出基于權重生成(WG)算法和監測點自動選擇(CAS)算法的自動檢查點策略,解決了現有Spark在檢查點上存在高風險性、隨機性的不足[238]。
關國棟對MapReduce作業執行時間預測進行改進,以歷史作業信息和數據輸入量為基礎,提出了新的作業執行時間預測模型,對執行預測時間有非常好的能力[239]。
關鍵配置失敗將嚴重影響系統的可靠性和性能,Ashish Singh 等人對云計算的框架服務部署模型、容錯機制、任務調配進行詳細分析[240]。
陳煌寧等人通過采用主/副版本技術提供容錯機制,提出了一種基于粒子群優化的執行時間和容錯的多目標優化算法,有效地降低任務失效個數,減少任務總執行成本[241]。
袁曹等人基于故障信號診斷數據處理問題,用過偏差分類算法對數據流的分區策略進行改進對數據進行建模分類,減少了執行過程中的計算量[242]。
朱艷偉以遷移虛擬機的為研究角度,通過雙降序策略基于云計算的特點將服務部署到各主機,同時考慮虛擬主機的遷移對服務的可靠性影響,降低能耗節省資源[243]。故障節點、網絡環境異常因素對云環境性能有著重要的影響,在此基礎上提出了可以隨作業任務大小以及節點CPU占用率自適應的多因素心跳機制和信譽值檢測機制,同時考慮節點大小、工作狀態、CPU占用等多因素對系統環境的影響,綜合各因素給出最優方案,并通過節點信譽值與最小閾值檢測節點的有效性,并通過大量實驗對比該算法能更快地發現故障點并及時重新分配任務[244]。
Gabriele D'Angelo等人提出一種基于容錯并行的分布式機制FT-GAIA,旨在可靠地處理并行和分布式仿真(PADS)模型,為解決多核處理器,以及多個執行單元在運行過程中的組建故障問題,通過FT-GAIA算法復制模擬實體并分布在多個執行節點,模擬實體之間的交互消息被復制,因此接收實體可以識別和丟棄損壞的消息。分析模型和實驗評估的結果表明,FT-GAIA提供了高度的容錯性,但執行單元的計算負荷適度增加[245]。
對于云環境中的高效資源配置和可能的系統故障管理問題,早期故障檢測可以在影響QoS 之前提供從潛在故障中恢復的空間,當前計算系統中的故障管理靜態技術不足以保證云用戶請求的QoS。Ziad A.Al-Sharif等人介紹了用于云計算基礎架構的ACCRS框架,以提高系統的利用率水平,降低成本和功耗并實現 SLA,ACCRS 框架采用自主計算基本組件,包括狀態監控、規劃和決策,通過縮放資源以響應云系統狀態的變化,對恢復操作進行故障預測、檢測和根本原因分析,以提高系統的可靠性、可用性和利用率水平[246]。
拒絕服務(DoS)攻擊和分布式拒絕服務(DDoS)攻擊可能主要危及系統服務的可用性,并且可以通過使用各種工具輕松啟動,從而導致財務損失,這些攻擊非常難以檢測和過濾,因為導致攻擊的數據包與合法流量非常相似,DoS攻擊被認為是對IT行業的最大威脅,并且每年都會發現攻擊的強度,大小和頻率都在增加。BB Gupta等人概述了可以在云環境中執行的DoS攻擊和分布式DoS攻擊以及可能的防御機制、工具和設備,討論了針對DoS攻擊防御云環境的許多未解決的問題和挑戰,有助于更好地理解云計算環境中的DDoS攻擊問題,當前的解決方案空間以及未來的研究范圍,以有效地處理此類攻擊[247]。
任何一個系統,都不可能保證在使用過程中沒有任何故障出現,但是作為一個優秀的系統即便在出現故障的情形下,仍有能力快速地、有效地完成數據的恢復工作,不會影響終端用戶的正常使用。HDFS最常見的故障有:NameNode故障、DataNode故障和網絡斷開[13-33,163~175]。Hadoop結構是由一個NameNode和多個DataNode構成的,因此,NameNode發生故障將是致命的故障,屬于瓶頸問題,可以造成整個系統的癱瘓。即在 HDFS 中,NameNode 故障屬于單點失效,非常嚴重。這種情況只能采取人工干預的方式進行恢復工作,該問題是目前比較關注的熱點之一。另外,網絡斷開會造成一組 DataNode 子集和NameNode失去聯系,這個也是很致命的。
目前,云計算之所以得到了廣泛的認可,最重要的一個原因就是成本廉價,換言之,云平臺可以由大量的廉價機組成,那么對于廉價機而言,宕機事件就是常態而非異常,如果云平臺沒有很好的容錯機制的話,這一點也是很難實現的。在HDFS中,DataNode會定期地向NameNode發送心跳包和塊報告,以證明自己處于正常工作狀態,如果連續一段時間內NameNode沒有收到該數據節點的任何信息,就判斷該節點宕機,那么不會再給該節點發送任何服務請求。而宕機的數據節點中所存放的所有數據將丟失,可能會造成一些數據塊的副本數量低于指定的最小值,這個時候就需要對丟失的數據塊進行恢復,并部署到正常工作的數據節點中去。因此,為了更好地提高系統性能和服務質量,關于丟失數據的恢復、備份數據節點的選擇,以及將恢復數據的重新部署等問題,都是本書重點研究的內容。
2.4 本章小結
本章對云計算及其關鍵技術進行了介紹和分析,并對它們的國內外發展現狀進行了闡述;并且在云計算環境下的資源優化管理方面,針對目前存在的主要問題,分別從數據管理、任務調度和容錯機制這三個最重要的環節進行了優化策略的研究和問題分析,具體研究成果將分別在以下三章中進行詳細闡述。
[1].http://aws.amazon.com/ec2/
[3].http://www.salesforce.com/platform/
[4].http://www.microsoft.com/windowsazure/
[5].http://code.google.com/appengine/
- 我們都是數據控:用大數據改變商業、生活和思維方式
- Microsoft SQL Server企業級平臺管理實踐
- Word 2010中文版完全自學手冊
- 卷積神經網絡的Python實現
- 算法與數據中臺:基于Google、Facebook與微博實踐
- iOS and OS X Network Programming Cookbook
- 深入淺出MySQL:數據庫開發、優化與管理維護(第2版)
- 智能數據時代:企業大數據戰略與實戰
- AI時代的數據價值創造:從數據底座到大模型應用落地
- 數據分析思維:產品經理的成長筆記
- Visual Studio 2012 and .NET 4.5 Expert Development Cookbook
- C# 7 and .NET Core 2.0 High Performance
- 數據可視化五部曲
- 實用數據結構基礎(第四版)
- 用戶畫像:平臺構建與業務實踐