分布式存儲與計算系統(tǒng)_第1頁
分布式存儲與計算系統(tǒng)_第2頁
分布式存儲與計算系統(tǒng)_第3頁
分布式存儲與計算系統(tǒng)_第4頁
分布式存儲與計算系統(tǒng)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、分布式存儲和計算系統(tǒng)分布式存儲和計算系統(tǒng)By 薛長俊2010-12-28返回MapReduceMapReduceBigTableBigTableGoogleGoogle的三駕馬車的三駕馬車GFSGFSGFSGFS簡介 組件失效不再被認為是意外,而是被看做正常的現象。常量監(jiān)視器,錯誤偵測,容錯以及自動恢復系統(tǒng)集成在系統(tǒng)中。 文件非常巨大。 大部分文件的修改,不是覆蓋原有數據,而是在文件尾追加新數據。 應用程序和文件系統(tǒng)API的協(xié)同設計。GFSGFS設計預期 這個系統(tǒng)由許多廉價易損的普通組件組成。 這個系統(tǒng)保存一定數量的大文件。 負載中主要包含兩種讀操作:大規(guī)模的流式讀取和小規(guī)模隨機讀取。 負載中

2、還包括許多大規(guī)模的順序的寫操作,追加數據到文件尾部。 系統(tǒng)必須高效的實現良好定義的多客戶端并行追加到一個文件的語意。 高度可用的帶寬比低延遲更加重要。GFSGFS架構 GFSGFS單一主服務器 主服務器可以通過全局的信息精確確定塊的位置以及進行復制決定。 主服務器保存三種主要類型的元數據:文件和塊的命名空間,文件到塊的映射,以及每個塊副本的位置。 主服務器執(zhí)行所有的名稱空間操作。另外,它管理整個系統(tǒng)的所有塊副本:它決定塊的位置,創(chuàng)建新塊和相應的副本,協(xié)調多變的系統(tǒng)活動,保持塊被完全復制,均衡所有塊服務器之間的負載,回收沒有使用的存儲空間。GFSGFS系統(tǒng)交互 GFSGFS創(chuàng)建、重新復制、負載均

3、衡 當主服務器創(chuàng)建一個塊,會選擇哪里放置初始的空副本。 新的副本放置在低于平均硬盤使用率的塊服務器。 限制每一個塊服務器上近期創(chuàng)建操作的數量。 把塊分布在機架之間。 一旦塊的可用副本數少于用戶指定的值,主服務器會重新復制它。 主服務器周期性地對副本進行負載均衡:它檢查當前的副本分布情況,然后移動副本以得到更好的硬盤剩余空間以及負載的均衡。GFSGFS垃圾回收及過期副本檢測 文件刪除后,主服務器把文件改成一個包含刪除時間戳的隱藏的名字。在主服務器對命名空間進行常規(guī)掃描時,物理刪除超過某個時間段的包含刪除時間戳的文件。 在相似的對塊命名空間的常規(guī)掃描,主服務器找到孤兒塊(無法從任何文件到達的塊)并

4、擦除它們的元數據。 主服務器在周期的垃圾回收中移除所有的過期副本。無論何時主服務器獲得一個塊的新租約,它增加塊的版本號,然后通知當前副本。主服務器和這些副本都把新的版本號記錄在它們的持久化存儲的狀態(tài)中。如果塊服務器失效,或者塊服務器當機的時候錯過了一些操作,塊副本會過期。GFSGFS容錯和診斷 高可用性。 快速恢復。不管主服務器和塊服務器是如何關閉的,它們被設計為可以在數秒鐘內恢復它們的狀態(tài)并啟動。 塊復制。每個塊被復制到不同機架上的不同的塊服務器上。 主節(jié)點復制。為了可靠性主服務器狀態(tài)要被復制。它的操作日志和檢查點都要復制到多臺機器上。 數據完整性。每個塊服務器利用校驗和來檢查存儲的數據是否

5、損壞。塊被分為64KB的大小,每個有一個對應的32位的校驗和。 診斷工具。廣泛而詳盡的分析日志。MapReduceMapReduce簡介 MapReduce 是一個編程模型,也是一個處理和生成超大數據集的算法模型的相關實現。 用戶首先創(chuàng)建一個Map 函數處理一個基于key/value pair 的數據集合,輸出中間的基于key/value pair 的數據集合;然后再創(chuàng)建一個Reduce 函數,用來合并所有的具有相同中間key 值的中間value 值。 MapReduce 架構的程序能夠在大量的普通配置的計算機上實現并行化處理。MapReduceMapReduce一般算法 MapReduceM

6、apReduce編程模型 MapReduceMapReduce一個例子 舉例:計算一個大的文檔集合中每個單詞出現的次數:map(String key, String value):/ key: document name/ value: document contentsfor each word w in value:EmitIntermediate(w, 1);reduce(String key, Iterator values):/ key: a word/ values: a list of countsint result = 0;for each v in values:resul

7、t += ParseInt(v);Emit(AsString(result);MapReduceMapReduce容錯 worker 故障。 master 周期性的ping 每個worker。如果在一個約定的時間范圍內沒有收到worker 返回的信息,master 將把這個worker 標記為失效。所有由這個失效的worker 完成的Map 任務被重設為初始的空閑狀態(tài),之后這些任務就可以被安排給其他的worker。同樣的,worker 失效時正在運行的Map 或Reduce 任務也將被重新置為空閑狀態(tài),等待重新調度。 master故障 master 周期性的將當前運行狀況寫入磁盤,即檢查點。如

8、果這個master 任務失效了,可以從最后一個檢查點開始啟動另一個master 進程。MapReduceMapReduce備用任務 木桶效應 在運算過程中,如果有一臺機器花了很長的時間才完成最后幾個Map 或Reduce 任務,會導致MapReduce 操作總的執(zhí)行時間超過預期。 流程優(yōu)化 當一個MapReduce 操作接近完成的時候,master 調度備用任務進程來執(zhí)行剩下的、處于處理中狀態(tài)的任務。無論是最初的執(zhí)行進程、還是備用任務進程完成了任務,我們都把這個任務標記成為已經完成。BigTableBigTable簡介 分布式的結構化數據存儲系統(tǒng)。 被設計用來處理海量數據:通常是分布在數千臺普

9、通服務器上的PB級的數據。 適用性廣泛、可擴展、高性能和高可用性。 Google的很多項目使用Bigtable存儲數據,包括Web索引、Google Earth、Google Finance。BigTableBigTable數據模型 稀疏的、分布式的、持久化存儲的多維度排序Map。 Map的索引是行關鍵字、列關鍵字以及時間戳;Map中的每個value都是一個未經解析的byte數組。(row:string, column:string,time:int64)-string 應用示例BigTableBigTable數據模型 行 表中的行關鍵字可以是任意的字符串。對同一個行關鍵字的讀或者寫操作都是原

10、子的。Bigtable通過行關鍵字的字典順序來組織數據。 列族 關鍵字組成的集合叫做“列族” 。訪問控制、磁盤和內存的使用統(tǒng)計都是在列族層面進行的。 時間戳 在Bigtable中,表的每一個數據項都可以包含同一份數據的不同版本,不同版本的數據通過時間戳來索引。BigTableBigTableAPI 建立、刪除表及列族。 修改集群、表和列族的元數據。 寫入或者刪除Bigtable中的值。 從每個行中查找值。 遍歷表中的一個數據子集。BigTableBigTable構件 Bigtable建立在其它的幾個Google基礎構件之上。 使用GFS存儲日志文件和數據文件。 依賴集群管理系統(tǒng)來調度任務、管理

11、共享的機器上的資源、處理機器的故障、以及監(jiān)視機器的狀態(tài)。 內部存儲數據的文件是Google SSTable格式的。SSTable是一個持久化的、排序的、不可更改的Map結構,而Map是一個key-value映射的數據結構,key和value的值都是任意的Byte串。 BigTable還依賴一個高可用的、序列化的分布式鎖服務組件,叫做Chubby。BigTableBigTable組件 Bigtable包括了三個主要的組件:鏈接到客戶程序中的庫、一個Master服務器和多個Tablet服務器。 Master服務器主要負責以下工作:為Tablet服務器分配Tablets、檢測新加入的或者過期失效的T

12、ablet服務器、對Tablet服務器進行負載均衡、以及對保存在GFS上的文件進行垃圾收集。除此之外,它還處理對模式的相關修改操作,例如建立表和列族。 每個Tablet服務器都管理一個Tablet的集合(通常每個服務器有大約數十個至上千個Tablet)。每個Tablet服務器負責處理它所加載的Tablet的讀寫操作,以及在Tablets過大時,對其進行分割。每個Tablet包含了某個范圍內的行的所有相關數據,每個Tablet的尺寸大約是100MB到200MB。BigTableBigTableTablet的位置 使用一個三層的、類似+樹的結構存儲Tablet的位置信息。BigTableBigTa

13、bleTablet服務返回HDFSHDFS體系結構及關鍵運行機制體系結構及關鍵運行機制Hadoop VS.GoogleHadoop VS.Google(分布式文件系統(tǒng))(分布式文件系統(tǒng))HadoopHadoopHadoopHadoop項目簡介項目簡介GFS-HDFS MapReduce-HadoopBigTable-HBase Apache的解決方案HadoopHadoop項目簡介項目簡介Apache的解決方案HadoopHadoop項目簡介項目簡介 HDFS為了做到可靠性(reliability)創(chuàng)建了多份數據塊(data blocks)的復制(replicas),并將它們放置在服務器群的計

14、算節(jié)點中(compute nodes),MapReduce就可以在它們所在的節(jié)點上處理這些數據了。HDFS的體系結構HDFSHDFS體系結構體系結構 NameNodeMaster。 DataNodeChunksever??煽啃员U螲DFSHDFS關鍵運行機制關鍵運行機制 一個名字節(jié)點和多個數據節(jié)點 數據復制(冗余機制) -存放的位置(機架感知策略) 故障檢測 -數據節(jié)點 心跳包(檢測是否宕機) 塊報告(安全模式下檢測) 數據完整性檢測(校驗和比較) -名字節(jié)點(日志文件,鏡像文件) 空間回收機制寫文件流程HDFSHDFS關鍵運行機制關鍵運行機制 客戶端緩存 流水線復制 并發(fā)寫控制 流程: 客戶

15、端把數據緩存到本地臨時文件夾。 臨時文件夾數據超過64M,客戶端聯(lián)系NameNode, NameNode分配DataNode,DataNode依照客戶端的位置被排列成一個有著最近物理距離和最小的序列。 與序列的第一個數據服務器建立Socket連接,發(fā)送請求頭,然后等待回應,依次下傳,客戶端得到回包,流水線建立成功。 正式發(fā)送數據,以4K為大小傳送。讀文件流程HDFSHDFS關鍵運行機制關鍵運行機制 客戶端聯(lián)系NameNode,得到所有數據塊信息,以及數據塊對應的所有數據服務器的位置信息。 嘗試從某個數據塊對應的一組數據服務器中選出一個,進行連接(選取算法未加入相對位置的考慮)。 數據被一個包一

16、個包發(fā)送回客戶端,等到整個數據塊的數據都被讀取完了,就會斷開此鏈接,嘗試連接下一個數據塊對應的數據服務器,整個流程,依次如此反復,直到所有想讀的都讀取完了為止。技術架構Hadoop VS.GoogleHadoop VS.Google 數據結構化管理組件:HbaseBigTable。 并行計算模型:MapReduceMapReduce。 分布式文件系統(tǒng):HDFSGFS。 Hadoop缺少分布式鎖服務Chubby。HBaseMapReduceHDFSBigTableMapReduceGFSHadoop云計算應用ChubbyGoogle云計算應用HDFS與GFS比較Hadoop VS.GoogleH

17、adoop VS.Google 中心服務器模式的差異。 GFS:多臺物理服務器,選擇一臺對外服務,損壞時可選擇另外一臺提供服務。 HDFS:單一中心服務器模式,存在單點故障。 原因:Hadoop缺少分布式鎖服務。 安全模式的差異。 HDFS具備安全模式。獲知數據塊副本狀態(tài),若副本不足,則拷貝副本至安全數目(如3個) GFS不具備安全模式。副本損壞處理:API讀取副本失敗時,Master負責發(fā)起拷貝任務。 HDFS具備空間回收機制。 文件刪除時,僅刪除目錄結構 實際數據的刪除在等待一段時間后實施 優(yōu)點:便于恢復文件HDFS與GFS比較Hadoop VS.GoogleHadoop VS.Googl

18、e 子服務器管理模式差異。 GFS:Chunk Server在Chubby中獲取獨占鎖表示其生存狀態(tài),Master通過輪詢這些獨占鎖獲知Chunk Server的生存狀態(tài)。 HDFS:DataNode通過心跳的方式告知NameNode其生存狀態(tài)。 GFS中,Master損壞時,替補服務器可以快速獲知Chunk Server的狀態(tài)。 HDFS中,NameNode損壞后,NameNode恢復時需要花費一段時間獲知DataNode的狀態(tài)。 在添加數據存儲節(jié)點時,GFS的伸縮性較HDFS要好。 原因:Hadoop缺乏分布式鎖服務。返回架構架構數據復制、自動分片數據復制、自動分片MongoDBMongo

19、DB簡介簡介簡介MongoDBMongoDB簡介簡介 分布式文檔存儲數據庫MongoDB是一個可擴展、高性能的下一代數據庫,由C+語言編寫,旨在為web應用提供可擴展的高性能數據存儲解決方案。 介于關系數據庫和非關系數據庫之間的產品。 支持的數據結構非常松散。類似json的bjson格式,可以存儲比較復雜的數據類型。 支持的查詢語言非常強大。語法類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,支持對數據建立索引。功能特征MongoDBMongoDB簡介簡介 面向集合存儲,易存儲對象類型的數據。 模式自由。 支持動態(tài)查詢。 支持完全索引,包含內部對象。 支持復制和故障

20、恢復。 使用高效的二進制數據存儲,包括大型對象(如視頻等)。 自動處理碎片,以支持云計算層次的擴展性 。 支持RUBY,PYTHON,JAVA,C+,PHP等多種語言。 文件存儲格式為BSON(一種JSON的擴展) 。 可通過網絡訪問。適用場景MongoDBMongoDB簡介簡介 網站數據:Mongo非常適合實時的插入,更新與查詢,并具備網站實時數據存儲所需的復制及高度伸縮性。 緩存:由于性能很高,Mongo也適合作為信息基礎設施的緩存層。在系統(tǒng)重啟之后,由Mongo搭建的持久化緩存層可以避免下層的數據源過載。 大尺寸,低價值的數據:使用傳統(tǒng)的關系型數據庫存儲一些數據時可能會比較昂貴,在此之前

21、,很多時候程序員往往會選擇傳統(tǒng)的文件進行存儲。 高伸縮性的場景:Mongo非常適合由數十或數百臺服務器組成的數據庫。Mongo的路線圖中已經包含對MapReduce引擎的內置支持。 用于對象及JSON數據的存儲:Mongo的BSON數據格式非常適合文檔化格式的存儲及查詢。架構圖MongoDBMongoDB架構架構組件MongoDBMongoDB架構架構 一個或多個分片,每個分片持有部分數據(自動管理)。讀寫操作自動路由到合適的分片上。一個分片是一臺或多臺服務器,每臺機器持有相同數據的拷貝。同一時間只有一個主節(jié)點,如果主節(jié)點死掉了,其中一臺從節(jié)點自動接管為主節(jié)點。所有的寫操作和一致性讀操作都進入

22、主節(jié)點,而所有的最終一致性讀操作分布到所有從節(jié)點上。 多臺配置服務器,其中每臺配置服務器持有表明數據位于哪個分片的元數據的拷貝。 每個路由器都作為一個或多個客戶端的服務器。客戶端向路由器發(fā)起查詢和更新,路由器詢問配置服務器后將請求分發(fā)到合適的分片上。 客戶端是用戶應用程序的一部分,它使用自身語言的mongo客戶端驅動向路由器發(fā)起請求。自動分片數據復制、自動分片數據復制、自動分片自動復制 使用master-slave方式實現數據的讀寫分離。master更新數據的同時,會自動的把數據復制到從slave。 MongoDB提供了replica pairs模式啟動數據庫,以這種方式啟動后,數據庫會自動協(xié)

23、商誰是master誰是slave。一旦一個數據庫服務器斷電,另一個會自動接管,并從那一刻起起為master。萬一另一個將來也出錯了,那么master狀態(tài)將會轉回給第一個服務器。數據復制、自動分片數據復制、自動分片返回TairTairTaobaoTaobaoTFSTFS簡介TFSTFS介紹介紹 一個高可擴展、高可用、高性能、面向互聯(lián)網服務的分布式文件系統(tǒng)。 主要針對海量的非結構化數據。 構筑在普通的Linux機器集群上,可為外部提供高可靠和高并發(fā)的存儲訪問。 適用于海量小文件存儲。 采用了HA架構和平滑擴容,保證了整個文件系統(tǒng)的可用性和擴展性。 扁平化的數據組織結構,可將文件名映射到文件的物理地

24、址,簡化了文件的訪問流程,一定程度上為TFS提供了良好的讀寫性能。架構TFSTFS架構架構NameServer功能TFSTFS組件組件 所有一級元數據的管理。 負責文件到達DataServer的定位,寫文件塊的分配。 數據更新一致性控制。 DataSever管理。 數據備份監(jiān)控,數據分布和垃圾回收。DataServer功能 存儲、管理數據文件。 處理客戶端文件訪問請求。 復制、整理、備份數據文件。NameServer管理的一級元數據TFSTFS組件組件平滑靈敏的負載策略TFSTFS負載均衡策略負載均衡策略 讀寫流量負載均衡。 復制、整理負載均衡。 實時動態(tài)反饋參數加權平均。塊復制策略 按塊復制

25、。 單個文件損壞的自動恢復功能。塊分布均衡策略 DataServer主機間的均衡。 DataServer進程間的均衡。加入集群TFSTFS平滑擴展平滑擴展 TFS集群容量不足時,只需將新的機器部署好應用程序以后,即可加入到運行中的TFS集群。 TFS會根據容量的比率,自動選擇寫入新數據到新服務器。 TFS會在適當的時候對所有的數據服務器進行數據均衡。退出集群 數據服務器的退出不影響TFS服務。 TFS檢測到DS退出后,會針對該DS擁有的數據做復制。 TFS重新均衡數據。集群容錯TFSTFS容錯機制容錯機制 TFS可以配置主輔集群,一般主輔集群會存放在兩個不同的機房。主集群提供所有功能,輔集群只

26、提供讀。主集群會把所有操作重放到輔集群。這樣既提供了負載均衡,又可以在主集群機房出現異常的情況不會中斷服務或者丟失數據。NameServer容錯 NameServer采用了HA結構,一主一備,主NameServer上的操作會重放至備NameServer。 NameServer和DataServer之間有定時的心跳機制,DataServer會把自己擁有的Block發(fā)送給NameServer。NameServer會根據這些信息重建DataServer和Block的關系。DataServer容錯 TFS采用Block存儲多份的方式來實現DataServer的容錯。每一個Block會在TFS中存在多份

27、,一般為3份,并且分布在不同網段的不同DataServer上。文件命名規(guī)則TFSTFS文件名的規(guī)則文件名的規(guī)則寫流程TFSTFS讀寫流程讀寫流程讀流程TFSTFS讀寫流程讀寫流程 獲得Block ID和File ID。 獲取dataserver地址。 請求文件。簡介TairTair介紹介紹 由淘寶自主開發(fā)的一個分布式 key/value 存儲引擎。 分為持久化和非持久化兩種使用方式。非持久化的tair可以看成是一個分布式緩存。 Tair除了普通Key/Value系統(tǒng)提供的功能,比如get、put、delete以及批量接口外,還有一些附加的實用功能,包括: Version支持 原子計數器 Item支持 多備份支持。特性TairTair介紹介紹 Version支持。 Tair中的每個數據都包含版本號,版本號在每次更新后都會遞增。這個特性有助于防止由于數據的并發(fā)更新導致的問題。 原子計數器。 Tair從服務器端支持原子的計數器操作,這使得Tair成為一個簡單易用的分布式計數器。 Item支持。 Tair還支持將value視為一個item數組,對value中的部分item進行操作。比如有個key的value為1,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論