




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、由于云計算分為IaaS、PaaS和SaaS三種類型,不同的廠家又提供了不同的解決方案,目前還沒有一個統一的技術體系結構,對讀者了解云計算的原理構成了障礙。為此,本文綜合不同廠家的方案,構造了一個供商榷的云計算體系結構。這個體系結構如圖3所示,它概括了不同解決方案的主要特征,每一種方案或許只實現了其中部分功能,或許也還有部分相對次要功能尚未概括進來。圖3 云計算技術體系結構云計算技術體系結構分為4層:物理資源層、資源池層、管理中間件層和SOA構建層,如圖3所示。物理資源層包括計算機、存儲器、網絡設施、數據庫和軟件等;資源池層是將大量相同類型的資源構成同構或接近同構的資源池,如計算資源池、數據資源
2、池等。構建資源池更多是物理資源的集成和管理工作,例如研究在一個標準集裝箱的空間如何裝下2000個服務器、解決散熱和故障節點替換的問題并降低能耗;管理中間件負責對云計算的資源進行管理,并對眾多應用任務進行調度,使資源能夠高效、安全地為應用提供服務;SOA構建層將云計算能力封裝成標準的Web Services服務,并納入到SOA體系進行管理和使用,包括服務注冊、查找、訪問和構建服務工作流等。管理中間件和資源池層是云計算技術的最關鍵部分,SOA構建層的功能更多依靠外部設施提供。云計算的管理中間件負責資源管理、任務管理、用戶管理和安全管理等工作。資源管理負責均衡地使用云資源節點,檢測節點的故障并試圖恢
3、復或屏蔽之,并對資源的使用情況進行監視統計;任務管理負責執行用戶或應用提交的任務,包括完成用戶任務映象(Image)的部署和管理、任務調度、任務執行、任務生命期管理等等;用戶管理是實現云計算商業模式的一個必不可少的環節,包括提供用戶交互接口、管理和識別用戶身份、創建用戶程序的執行環境、對用戶的使用進行計費等;安全管理保障云計算設施的整體安全,包括身份認證、訪問授權、綜合防護和安全審計等。基于上述體系結構,本文以IaaS云計算為例,簡述云計算的實現機制,如圖4所示。用戶交互接口向應用以Web Services方式提供訪問接口,獲取用戶需求。服務目錄是用戶可以訪問的服務清單。系統管理模塊負責管理和
4、分配所有可用的資源,其核心是負載均衡。配置工具負責在分配的節點上準備任務運行環境。監視統計模塊負責監視節點的運行狀態,并完成用戶使用節點情況的統計。執行過程并不復雜:用戶交互接口允許用戶從目錄中選取并調用一個服務。該請求傳遞給系統管理模塊后,它將為用戶分配恰當的資源,然后調用配置工具來為用戶準備運行環境。Hadoop HDFS特性簡介 一、設計思想1、硬件失效是“常態事件“,而非“偶然事件”。HDFS可能是有上千的機器組成(文檔中描述的Yahoo!一個Hadoop集群有4096個節點),任何一個組件都有可能一直失效,因此數據的健壯性錯誤檢測和快速、自動的恢復是HDFS的核心架構目標。2、 流式
5、數據訪問。運行在HDFS上的應用和普通的應用不同,需要流式訪問它們的數據集。HDFS的設計中更多的考慮到了數據批處理,而不是用戶交互處理。比之數據訪問的低延遲問題,更關鍵的在于數據并發訪問的高吞吐量。POSIX標準設置的很多硬性約束對HDFS應用系統不是必需的。為了提高數據的吞吐量,在一些關鍵方面對 POSIX的語義做了一些修改。3、 HDFS應用對文件要求的是write-one-read-many訪問模型。一個文件經過創建、寫,關閉之后就不需要改變。這一假設簡化了數據一致性問題,使高吞吐量的數據訪問成為可能。典型的如MapReduce框架,或者一個web crawler應用都很適合這個模型。
6、4、移動計算的代價比之移動數據的代價低。一個應用請求的計算,離它操作的數據越近就越高效,這在數據達到海量級別的時候更是如此。將計算移動到數據附近,比之將數據移動到應用所在顯然更好,HDFS提供給應用這樣的接口。5、在異構的軟硬件平臺間的可移植性。二、Namenode和Datanode的劃分一個HDFS集群有一個Namenode和一定數目的Datanode組成。Namenode是一個中心服務器,負責管理文件系統的namespace和客戶端對文件的訪問。Datanode在集群中會有多個,一般是一個節點存在一個,負責管理其自身節點上它們附帶的存儲。在內部,一個大文件其分成一個或多個block,這些b
7、lock存儲在Datanode集合里。Namenode執行文件系統的namespace相關操作,例如打開、關閉、重命名文件和目錄,同時決定了block到具體Datanode節點的映射。Datanode在Namenode的指揮下進行block的創建、刪除和復制。單一節點的Namenode大大簡化了系統的架構。Namenode負責保管和管理所有的HDFS元數據,因而在請求Namenode得到文件的位置后就不需要通過Namenode參與而直接從Datanode進行。為了提高Namenode的性能,所有文件的namespace數據都在內存中維護,所以就天生存在了由于內存大小的限制導致一個HDFS集群的
8、提供服務的文件數量的上限。根據目前的文檔,一個元數據(一個HDFS文件塊兒)占用200Bytes,如果是頁面抓取的小文件,那么32GB內存能承載1.5億左右的文件存儲(有待精確詳細測試)。三、文件系統操作和namespace的關系HDFS支持傳統的層次型文件組織,與大多數其他文件系統類似,用戶可以創建目錄,并在其間創建、刪除、移動和重命名文件。HDFS不支持user quotas和訪問權限,也不支持鏈接(link),不過當前的架構并不排除實現這些特性。Namenode維護文件系統的namespace,任何對文件系統namespace和文件屬性的修改都將被Namenode記錄下來。應用可以設置H
9、DFS保存的文件的副本數目,文件副本的數目稱為文件的 replication因子,這個信息也是由Namenode保存。四、數據復制HDFS被設計成在一個大集群中可以跨機器地可靠地存儲海量的文件。它將每個文件存儲成block序列,除了最后一個block,所有的block都是同樣的大小。文件的所有block為了容錯都會被復制。每個文件的block大小和replication因子都是可配置的。Replication因子可以在文件創建的時候配置,以后也可以改變。HDFS中的文件是write-one,并且嚴格要求在任何時候只有一個writer。Namenode全權管理block的復制,它周期性地從集群中
10、的每個Datanode接收心跳包和一個Blockreport。心跳包的接收表示該Datanode節點正常工作,而Blockreport包括了該Datanode上所有的block組成的列表。1、副本的存放,副本的存放是HDFS可靠性和性能的關鍵。龐大的HDFS實例一般運行在多個機架的計算機形成的集群上,不同機架間的兩臺機器的通訊需要通過交換機,顯然通常情況下,同一個機架內的兩個節點間的帶寬會比不同機架間的兩臺機器的帶寬大。在大多數情況下,replication因子是3,HDFS的存放策略是將一個副本存放在本地機架上的節點,一個副本放在同一機架上的另一個節點,最后一個副本放在不同機架上的一個節點。
11、機架的錯誤遠遠比節點的錯誤少,這個策略不會影響到數據的可靠性和有效性。三分之一的副本在一個節點上,三分之二在一個機架上,其他保存在剩下的機架中,這一策略改進了寫的性能。2、副本的選擇,為了降低整體的帶寬消耗和讀延時,HDFS會盡量讓reader讀最近的副本。如果在reader的同一個機架上有一個副本,那么就讀該副本。如果一個HDFS集群跨越多個數據中心,那么reader也將首先嘗試讀本地數據中心的副本。3、SafeModeNamenode啟動后會進入一個稱為SafeMode的特殊狀態,處在這個狀態的Namenode是不會進行數據塊的復制的。Namenode從所有的 Datanode接收心跳包和
12、Blockreport。Blockreport包括了某個Datanode所有的數據塊列表。每個block都有指定的最小數目的副本。當Namenode檢測確認某個Datanode的數據塊副本的最小數目,那么該Datanode就會被認為是安全的;如果一定百分比(這個參數可配置)的數據塊檢測確認是安全的,那么Namenode將退出SafeMode狀態,接下來它會確定還有哪些數據塊的副本沒有達到指定數目,并將這些block復制到其他Datanode。五、文件系統元數據的持久化Namenode存儲HDFS的元數據。對于任何對文件元數據產生修改的操作,Namenode都使用一個稱為Editlog的事務日志
13、記錄下來。例如,在HDFS中創建一個文件,Namenode就會在Editlog中插入一條記錄來表示;同樣,修改文件的replication因子也將往 Editlog插入一條記錄。Namenode在本地OS的文件系統中存儲這個Editlog。整個文件系統的namespace,包括block到文件的映射、文件的屬性,都存儲在稱為FsImage的文件中,這個文件也是放在Namenode所在系統的文件系統上。Namenode在內存中保存著整個文件系統namespace和文件Blockmap的映像。這個關鍵的元數據設計得很緊湊,一般為200Bytes的內存占用,因而一個帶有4G內存的 Namenode足
14、夠支撐海量的文件和目錄。當Namenode啟動時,它從硬盤中讀取Editlog和FsImage,將所有Editlog中的事務作用(apply)在內存中的FsImage ,并將這個新版本的FsImage從內存中flush到硬盤上,然后再truncate這個舊的Editlog,因為這個舊的Editlog的事務都已經作用在FsImage上了。這個過程稱為checkpoint。在當前實現中,checkpoint只發生在Namenode啟動時,在不久的將來我們將實現支持周期性的checkpoint。Datanode并不知道關于文件的任何東西,除了將文件中的數據保存在本地的文件系統上。它把每個HDFS數據
15、塊存儲在本地文件系統上隔離的文件中。 Datanode并不在同一個目錄創建所有的文件,相反,它用啟發式地方法來確定每個目錄的最佳文件數目,并且在適當的時候創建子目錄。在同一個目錄創建所有的文件不是最優的選擇,因為本地文件系統可能無法高效地在單一目錄中支持大量的文件。當一個Datanode啟動時,它掃描本地文件系統,對這些本地文件產生相應的一個所有HDFS數據塊的列表,然后發送報告到Namenode,這個報告就是Blockreport。六、通訊協議所有的HDFS通訊協議都是構建在TCP/IP協議上。客戶端通過一個可配置的端口連接到Namenode,通過ClientProtocol與 Nameno
16、de交互。而Datanode是使用DatanodeProtocol與Namenode交互。從ClientProtocol和 Datanodeprotocol抽象出一個遠程調用(RPC),在設計上,Namenode不會主動發起RPC,而是是響應來自客戶端和 Datanode 的RPC請求。七、健壯性HDFS的主要目標就是實現在失敗情況下的數據存儲可靠性。常見的三種失敗:Namenode failures, Datanode failures和網絡分割(network partitions)。1、硬盤數據錯誤、心跳檢測和重新復制每個Datanode節點都向Namenode周期性地發送心跳包。網絡切
17、割可能導致一部分Datanode跟Namenode失去聯系。 Namenode通過心跳包的缺失檢測到這一情況,并將這些Datanode標記為dead,不會將新的IO請求發給它們。寄存在dead Datanode上的任何數據將不再有效。Datanode的死亡可能引起一些block的副本數目低于指定值,Namenode不斷地跟蹤需要復制的 block,在任何需要的情況下啟動復制。在下列情況可能需要重新復制:某個Datanode節點失效,某個副本遭到損壞,Datanode上的硬盤錯誤,或者文件的replication因子增大。2、集群均衡HDFS支持數據的均衡計劃,如果某個Datanode節點上的空
18、閑空間低于特定的臨界點,那么就會啟動一個計劃自動地將數據從一個Datanode搬移到空閑的Datanode。當對某個文件的請求突然增加,那么也可能啟動一個計劃創建該文件新的副本,并分布到集群中以滿足應用的要求。這些均衡計劃目前還沒有實現。3、數據完整性從某個Datanode獲取的數據塊有可能是損壞的,這個損壞可能是由于Datanode的存儲設備錯誤、網絡錯誤或者軟件bug造成的。HDFS客戶端軟件實現了HDFS文件內容的校驗和。當某個客戶端創建一個新的HDFS文件,會計算這個文件每個block的校驗和,并作為一個單獨的隱藏文件保存這些校驗和在同一個HDFS namespace下。當客戶端檢索文
19、件內容,它會確認從Datanode獲取的數據跟相應的校驗和文件中的校驗和是否匹配,如果不匹配,客戶端可以選擇從其他Datanode獲取該block的副本。4、元數據磁盤錯誤FsImage和Editlog是HDFS的核心數據結構。這些文件如果損壞了,整個HDFS實例都將失效。因而,Namenode可以配置成支持維護多個FsImage和Editlog的拷貝。任何對FsImage或者Editlog的修改,都將同步到它們的副本上。這個同步操作可能會降低 Namenode每秒能支持處理的namespace事務。這個代價是可以接受的,因為HDFS是數據密集的,而非元數據密集。當Namenode重啟的時候,
20、它總是選取最近的一致的FsImage和Editlog使用。Namenode在HDFS是單點存在,如果Namenode所在的機器錯誤,手工的干預是必須的。目前,在另一臺機器上重啟因故障而停止服務的Namenode這個功能還沒實現。八、數據組織1、數據塊兼容HDFS的應用都是處理大數據集合的。這些應用都是寫數據一次,讀卻是一次到多次,并且讀的速度要滿足流式讀。HDFS支持文件的write-once,read-many。一個典型的block大小是64MB,因而,文件總是按照64M切分成chunk,每個chunk存儲于不同的Datanode上。2、數據產生步驟某個客戶端創建文件的請求其實并沒有立即發給
21、Namenode,事實上,HDFS客戶端會將文件數據緩存到本地的一個臨時文件。應用的寫被透明地重定向到這個臨時文件。當這個臨時文件累積的數據超過一個block的大小(默認64M),客戶端才會聯系Namenode。Namenode將文件名插入文件系統的層次結構中,并且分配一個數據塊給它,然后返回Datanode的標識符和目標數據塊給客戶端。客戶端將本地臨時文件flush到指定的 Datanode上。當文件關閉時,在臨時文件中剩余的沒有flush的數據也會傳輸到指定的Datanode,然后客戶端告訴Namenode文件已經關閉。此時Namenode才將文件創建操作提交到持久存儲。如果Namenod
22、e在文件關閉前掛了,該文件將丟失。上述方法是對通過對HDFS上運行的目標應用認真考慮的結果。如果不采用客戶端緩存,由于網絡速度和網絡堵塞會對吞估量造成比較大的影響。3、數據塊復制當某個客戶端向HDFS文件寫數據的時候,一開始是寫入本地臨時文件,假設該文件的replication因子設置為3,那么客戶端會從Namenode 獲取一張Datanode列表來存放副本。然后客戶端開始向第一個Datanode傳輸數據,第一個Datanode一小部分一小部分(4kb)地接收數據,將每個部分寫入本地倉庫,并且同時傳輸該部分到第二個Datanode節點。第二個Datanode也是這樣,邊收邊傳,一小部分一小部分地收,存儲在本
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高級審計師點評與建議試題及答案
- 小學語文領域課件探索大自然
- 雙重預防機制建設與應用
- 大班交通安全教案《交通規則遵守》
- 踐行文明不當看客
- 管理不能大于經營:企業生存的核心法則
- 飛機日常檢查實施細節試題及答案
- 山東省天一大聯考齊魯名校教研共同體2025屆高三開學質量檢測聯考-化學答案
- 名校教研聯盟2025屆高考仿真模擬卷-地理試題+答案
- 航空器發動機維護知識要點試題及答案
- 有機化學課后習題答案-李艷梅版
- 石材養護報價表范本
- 收購酒店盡調報告范本
- 專職(志愿、義務)消防隊人員名單表
- 海地軟件幫助
- 有限空間作業安全隱患排查清單
- 小學心理健康教育課件《微笑的力量》
- 心理健康案例分析試題
- 繼電保護單選練習題庫及答案
- 新疆功能性高分子材料項目可行性研究報告
- 小升初第一講-簡便運算課件
評論
0/150
提交評論