6、分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))-學(xué)習(xí)課件_第1頁(yè)
6、分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))-學(xué)習(xí)課件_第2頁(yè)
6、分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))-學(xué)習(xí)課件_第3頁(yè)
6、分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))-學(xué)習(xí)課件_第4頁(yè)
6、分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))-學(xué)習(xí)課件_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Oracle·WDPe·WDP分布式文件系統(tǒng)(數(shù)據(jù)庫(kù))Oracle高校大數(shù)據(jù)課程系列本課目標(biāo)理解關(guān)系數(shù)據(jù)庫(kù)的原理掌握內(nèi)存kv數(shù)據(jù)庫(kù)的原理及應(yīng)用掌握列族數(shù)據(jù)庫(kù)的原理掌握文檔數(shù)據(jù)庫(kù)的原理及應(yīng)用Coursecatalogue課程目錄關(guān)系數(shù)據(jù)庫(kù)1KV內(nèi)存數(shù)據(jù)庫(kù)2列族數(shù)據(jù)庫(kù)3文檔數(shù)據(jù)庫(kù)4關(guān)系數(shù)據(jù)庫(kù)每個(gè)字段都被SQL定義成具體的數(shù)據(jù)類型,表示一定長(zhǎng)度的字節(jié)序列字段的表示關(guān)系數(shù)據(jù)庫(kù)

定長(zhǎng)記錄:它所包含的所有字段均為定長(zhǎng)。記錄的表示關(guān)系數(shù)據(jù)庫(kù)

變長(zhǎng)記錄:允許它包含變長(zhǎng)字段,有多重表示方法記錄的表示關(guān)系數(shù)據(jù)庫(kù)記錄在磁盤上的物理存儲(chǔ)方式有物理臨接存儲(chǔ),指針連接存儲(chǔ)。記錄集合的存儲(chǔ)結(jié)構(gòu)關(guān)系數(shù)據(jù)庫(kù)記錄在磁盤上的物理存儲(chǔ)方式有物理臨接存儲(chǔ),指針連接存儲(chǔ)。記錄集合的存儲(chǔ)結(jié)構(gòu)關(guān)系數(shù)據(jù)庫(kù)因應(yīng)用不同有多種組織形式:堆文件、順序文件、散列文件、按列存儲(chǔ)。順序文件:記錄按某個(gè)搜索碼的值的順序進(jìn)行存儲(chǔ)。數(shù)據(jù)文件的組織形式關(guān)系數(shù)據(jù)庫(kù)散列文件:直接存取文件或哈希文件,利用哈希函數(shù)將具有相同搜索碼值的記錄散列到外存(通常是磁盤)的同地址范圍內(nèi)。數(shù)據(jù)文件的組織形式關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)文件的組織形式關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)文件的組織形式關(guān)系數(shù)據(jù)庫(kù)索引關(guān)系數(shù)據(jù)庫(kù)順序文件索引結(jié)構(gòu):文件按搜索碼的順序存儲(chǔ),索引記錄按搜索碼值排序---主索引。此種主索引可以是稀疏的,也可以是稠密的。關(guān)系數(shù)據(jù)庫(kù)順序文件索引結(jié)構(gòu):文件按搜索碼的順序存儲(chǔ),索引記錄按搜索碼值排序---主索引。此種主索引可以是稀疏的,也可以是稠密的。關(guān)系數(shù)據(jù)庫(kù)多級(jí)索引有時(shí)二者經(jīng)常結(jié)合使用建立多級(jí)索引,即先建立稠密主索引,然后在稠密主索引文件上建立稀疏索引。關(guān)系數(shù)據(jù)庫(kù)輔助索引關(guān)系數(shù)據(jù)庫(kù)B+樹(shù)索引B+樹(shù)索引可以作為主索引,也可以作為輔助索引。作為主索引時(shí),可以是稀疏的,也可以是稠密的。關(guān)系數(shù)據(jù)庫(kù)散列索引散列索引:散列函數(shù)h,搜索碼值k,利用h(k)將記錄分散到B個(gè)桶中的技術(shù)。根據(jù)B是否固定可有靜態(tài)散列和動(dòng)態(tài)散列兩種方法。令搜索碼經(jīng)過(guò)散列并二進(jìn)制序列化后的長(zhǎng)度,N=4,當(dāng)i=1時(shí),說(shuō)明有兩個(gè)桶(0,1)Coursecatalogue課程目錄關(guān)系數(shù)據(jù)庫(kù)1KV內(nèi)存數(shù)據(jù)庫(kù)2列族數(shù)據(jù)庫(kù)3文檔數(shù)據(jù)庫(kù)4關(guān)系數(shù)據(jù)庫(kù)不擅長(zhǎng)

關(guān)系數(shù)據(jù)庫(kù)是一個(gè)通用性的數(shù)據(jù)庫(kù),并不能完全適應(yīng)所有的用途。具體來(lái)說(shuō)它并不擅長(zhǎng)以下處理:大量數(shù)據(jù)的寫(xiě)入處理;為有數(shù)據(jù)更新的表做索引或表結(jié)構(gòu)變更。字段不固定時(shí)應(yīng)用。對(duì)簡(jiǎn)單查詢需要快速返回結(jié)果的處理。關(guān)系數(shù)據(jù)庫(kù)不擅長(zhǎng)這是一張訂單表。在用戶界面中看起來(lái)像一個(gè)聚合結(jié)構(gòu),然而其數(shù)據(jù)卻存放在關(guān)系型數(shù)據(jù)庫(kù)的多張表中。每章表的行對(duì)應(yīng)具體的數(shù)據(jù)。這樣一來(lái),如果在內(nèi)存中使用了較為豐富的數(shù)據(jù)結(jié)構(gòu),那么要把它保存到磁盤之前,必須先將其轉(zhuǎn)換成”關(guān)系“。于是就發(fā)生了“阻抗失諧”。阻抗失諧關(guān)系模型與聚合數(shù)據(jù)模型關(guān)系模型關(guān)系模型與聚合數(shù)據(jù)模型聚合數(shù)據(jù)模型關(guān)系模型與聚合數(shù)據(jù)模型構(gòu)建數(shù)據(jù)存取模型(鍵值、文檔數(shù)據(jù)庫(kù))關(guān)系模型與聚合數(shù)據(jù)模型構(gòu)建數(shù)據(jù)存取模型(列族數(shù)據(jù)庫(kù))RAMCloud

RAMCloud是斯坦福大學(xué)提出的大規(guī)模集群下的純內(nèi)存KV數(shù)據(jù)庫(kù)系統(tǒng),最大的特點(diǎn)是讀/寫(xiě)效率高,其設(shè)計(jì)目標(biāo)是在數(shù)千臺(tái)服務(wù)器規(guī)模下讀取小對(duì)象速度能夠達(dá)到5?]0納秒,這種速度是目前常規(guī)數(shù)據(jù)中心存儲(chǔ)方案性能的50~1000倍。RAMCloud

每臺(tái)存儲(chǔ)服務(wù)器包含兩個(gè)構(gòu)件:Master和BackupMaster負(fù)責(zé)內(nèi)存KV數(shù)據(jù)的存儲(chǔ)并響應(yīng)客戶端讀/寫(xiě)請(qǐng)求,Backup負(fù)責(zé)在外存存儲(chǔ)管理其他服務(wù)器節(jié)點(diǎn)內(nèi)存數(shù)據(jù)的數(shù)據(jù)備份。每個(gè)RAMCloud集群內(nèi)包含唯一的管理節(jié)點(diǎn),稱之為協(xié)調(diào)器(Coordinator)協(xié)調(diào)器記載集群中的一些配置信息,比如各個(gè)存儲(chǔ)服務(wù)器的IP地址等,另外還負(fù)責(zé)維護(hù)存儲(chǔ)對(duì)象和存儲(chǔ)服務(wù)器的映射關(guān)系,即某個(gè)存儲(chǔ)對(duì)象是放在哪臺(tái)服務(wù)器的,,RAMCloud的存儲(chǔ)管理單位是子表(Tablet),即若干個(gè)主鍵有序的存儲(chǔ)對(duì)象構(gòu)成的集合,所以協(xié)調(diào)器記載的其實(shí)是子表和存儲(chǔ)服務(wù)器之間的映射關(guān)系。RAMCloud整體架構(gòu)RAMCloud

RAMCloud在內(nèi)存和外存存儲(chǔ)數(shù)據(jù)時(shí)都統(tǒng)一采用LSM樹(shù)方案.其對(duì)應(yīng)的Log結(jié)構(gòu)被切割為8MB大小的數(shù)據(jù)片段(Segment)。RAMCloud整體架構(gòu)RAMCloud

這個(gè)機(jī)制包含兩個(gè)方面:一方面是將待備份的數(shù)據(jù)盡可能多地分散到不同備份服務(wù)器中,這樣在恢復(fù)內(nèi)存數(shù)據(jù)的時(shí)候每臺(tái)備份服務(wù)器只需傳遞少量數(shù)據(jù),增加并發(fā)性。另外一方面是將待重建的內(nèi)存數(shù)據(jù)分散到多臺(tái)存儲(chǔ)服務(wù)器來(lái)恢復(fù),這樣也減少了每臺(tái)服務(wù)器需要恢復(fù)的數(shù)據(jù)量,增加并發(fā)性。通過(guò)以上兩種措施可以實(shí)現(xiàn)快速數(shù)據(jù)恢復(fù),RAMCloud可以在1秒之內(nèi)恢復(fù)崩潰的內(nèi)存數(shù)據(jù)。數(shù)據(jù)恢復(fù)機(jī)制Redis

Redis是著名的內(nèi)存KV數(shù)據(jù)庫(kù),在工業(yè)界獲得了廣泛使用其不僅支持基本數(shù)據(jù)類型,也支持列表、集合等復(fù)雜數(shù)據(jù)結(jié)構(gòu),所以有較強(qiáng)的表達(dá)能力,同時(shí)有非常高的單機(jī)讀/寫(xiě)效率:Redis

系統(tǒng)中唯一的Master負(fù)責(zé)數(shù)據(jù)的讀/寫(xiě)操作,可以有多個(gè)Slave來(lái)保存數(shù)據(jù)副本,副本數(shù)據(jù)只能讀不能做數(shù)據(jù)更新操作。當(dāng)Slave初次啟動(dòng)時(shí),從Master獲取數(shù)據(jù),在數(shù)據(jù)復(fù)制過(guò)程中,Master是非阻塞的,即同時(shí)可以支持讀/寫(xiě)操作。Master采用快照加增量的異步方式完成數(shù)據(jù)復(fù)制過(guò)程,首先在時(shí)刻T將內(nèi)存數(shù)據(jù)寫(xiě)入本地快照文件,同時(shí)在內(nèi)存記錄從T時(shí)刻起新增的數(shù)據(jù)操作.當(dāng)快照文件生成結(jié)束后,Master將文件傳給Slave,Slave先保存為本地文件,然后將其加載入內(nèi)存。之后,Master將T時(shí)刻后的數(shù)據(jù)變更操作以命令流的形式傳給Slave,Slave順序執(zhí)行命令流,這樣就達(dá)到數(shù)據(jù)和Master保持同步。Coursecatalogue課程目錄關(guān)系數(shù)據(jù)庫(kù)1KV內(nèi)存數(shù)據(jù)庫(kù)2列族數(shù)據(jù)庫(kù)3文檔數(shù)據(jù)庫(kù)4HBASE

RegionServer:提供數(shù)據(jù)的讀寫(xiě)服務(wù),當(dāng)客戶端訪問(wèn)數(shù)據(jù)時(shí),直接和RegionServer通信。HBaseMaster:Region的分配,.DDL操作(創(chuàng)建表,刪除表)Zookeeper:是HDFS的一部分,維護(hù)一個(gè)活躍的集群狀態(tài)。HadoopDataNode存儲(chǔ)著RegionServer管理的數(shù)據(jù),所有的Hbase數(shù)據(jù)存儲(chǔ)在HDFS文件系統(tǒng)中,RegionServers在HDFSDataNode中是可配置的,并使數(shù)據(jù)存儲(chǔ)靠近在它所需要的地方,就近服務(wù),當(dāng)王HBASE寫(xiě)數(shù)據(jù)時(shí)時(shí)Local的,但是當(dāng)一個(gè)region被移動(dòng)之后,Hbase的數(shù)據(jù)就不是Local的,除非做了壓縮(compaction)操作。NameNode維護(hù)物理數(shù)據(jù)塊的元數(shù)據(jù)信息。Hbase架構(gòu)的組件HBASEHBaseTables通過(guò)行健的范圍(rowkeyrange)被水平切分成多個(gè)Region,一個(gè)Region包含了所有的,在Region開(kāi)始鍵和結(jié)束之內(nèi)的行,Regions被分配到集群的節(jié)點(diǎn)上,成為RegionServers,提供數(shù)據(jù)的讀寫(xiě)服務(wù),一個(gè)regionserver可以服務(wù)1000個(gè)Region。RegionsHBASE分配Region,DDL操作(創(chuàng)建表,刪除表)協(xié)調(diào)各個(gè)ReionServer:-在啟動(dòng)時(shí)分配Region、在恢復(fù)或是負(fù)載均衡時(shí)重新分配Region。-監(jiān)控所有集群當(dāng)中的RegionServer實(shí)例,從ZooKeeper中監(jiān)聽(tīng)通知。管理功能:-提供創(chuàng)建、刪除、更新表的接口。HBaseHMasterHBASEHbase使用Zookeeper作為分布式協(xié)調(diào)服務(wù),來(lái)維護(hù)集群中的Server狀態(tài),ZooKeeper維護(hù)著哪些Server是活躍或是可用的。提供Server失敗時(shí)的通知。Zookeeper使用一致性機(jī)制來(lái)保證公共的共享狀態(tài),注意,需要使用奇數(shù)的三臺(tái)或是五臺(tái)機(jī)器,保證一致。ZooKeeper:協(xié)調(diào)器HBASEZookeeper一般在分布式系統(tǒng)中的成員之間協(xié)調(diào)共享的狀態(tài)信息,RegionServer和活躍的HMaster通過(guò)會(huì)話連接到Zookeeper,ZooKeeper維護(hù)短暫的階段,通過(guò)心跳機(jī)制用于活躍的會(huì)話。每個(gè)RegionServer創(chuàng)建一個(gè)短暫的節(jié)點(diǎn),HMaster監(jiān)控這些節(jié)點(diǎn)發(fā)現(xiàn)可用的RegionServer,同時(shí)HMaster也監(jiān)控這些節(jié)點(diǎn)的服務(wù)器故障。HMaster通過(guò)撞見(jiàn)一個(gè)臨時(shí)的節(jié)點(diǎn),Zookeeper決定其中一個(gè)HMaster作為活躍的。活躍的HMaster給ZooKeeper發(fā)送心跳信息,不活躍的HMaster在活躍的HMaster出現(xiàn)故障時(shí),接受通知。組件之間如何工作如果一個(gè)RegionServer或是一個(gè)活躍的HMaster在發(fā)送心跳信息時(shí)失敗或是出現(xiàn)了故障,則會(huì)話過(guò)期,相應(yīng)的臨時(shí)節(jié)點(diǎn)將被刪除,監(jiān)聽(tīng)器將因這些刪除的節(jié)點(diǎn)更新通知信息,活躍的HMaster將監(jiān)聽(tīng)RegionServer,并且將會(huì)恢復(fù)出現(xiàn)故障的RegionServer,不活躍的HMaster監(jiān)聽(tīng)活躍的HMaster故障,如果一個(gè)活躍的HMaster出現(xiàn)故障,則不活躍的HMaster將會(huì)變得活躍。HBASE有一個(gè)特殊的Hbase目錄表叫做Meta表,它擁有Region在集群中的位置信息,ZooKeeper存儲(chǔ)著Meta表的位置。如下就是客戶端首次讀寫(xiě)Hbase所發(fā)生的事情:1.客戶端從Zookeeper的Meta表中獲取RegionServer。2.客戶端將查詢.META.服務(wù)器,獲取它想訪問(wèn)的相對(duì)應(yīng)的Region。Server的行健??蛻舳藢⒕彺孢@些信息以及META表的位置。3.客戶端將從相應(yīng)的RegionServer獲取行。Hbase的首次讀與寫(xiě)如果再次讀取,客戶端將使用緩存來(lái)獲取META的位置及之前的行健。這樣時(shí)間久了,客戶端不需要查詢META表,除非Region移動(dòng)所導(dǎo)致的丟失,這樣的話,則將會(huì)重新查詢更新緩存。HBASEMETA表集群中所有Region的列表.META.表像是一個(gè)B樹(shù).META.表結(jié)構(gòu)為:-Key:regionstartkey,regionid-Values:RegionServerHbaseMETA表HBASERegionServer運(yùn)行在HDFSDataNode上,并有如下組件:WAL:WriteAheadLog提前寫(xiě)日志是一個(gè)分布式文件系統(tǒng)上的文件,WAL存儲(chǔ)沒(méi)有持久化的新數(shù)據(jù),用于故障恢復(fù),類似Oracle的RedoLog。BlockCache:讀緩存,它把頻繁讀取的數(shù)據(jù)放入內(nèi)存中,采用LRU。MemStore:寫(xiě)緩存,存儲(chǔ)來(lái)沒(méi)有來(lái)得及寫(xiě)入磁盤的新數(shù)據(jù),每一個(gè)region的每一個(gè)列族有一個(gè)MemStore。Hfiles:存儲(chǔ)行,作為鍵值對(duì),在硬盤上。RegionServer的組件HBASE當(dāng)客戶端提交一個(gè)Put請(qǐng)求,第一步是把數(shù)據(jù)寫(xiě)入WAL:-編輯到在磁盤上的WAL的文件,添加到WAL文件的末尾-WAL用于宕機(jī)恢復(fù)Hbase寫(xiě)步驟1HBASE一旦數(shù)據(jù)寫(xiě)入WAL,將會(huì)把它放到MemStore里,然后將返回一個(gè)ACk給客戶端Hbase寫(xiě)步驟2HBASEMemStore存儲(chǔ)以鍵值對(duì)的方式更新內(nèi)存,和存儲(chǔ)在HFile是一樣的。每一個(gè)列族就有一個(gè)MemStore,以每個(gè)列族順序的更新。MemStoreHBASE當(dāng)MemStore積累到足夠的數(shù)據(jù),則整個(gè)排序后的集合被寫(xiě)到HDFS的新的HFile中,每個(gè)列族使用多個(gè)HFiles,列族包含真實(shí)的單元格,或者是鍵值對(duì)的實(shí)例,隨著KeyValue鍵值對(duì)在MemStores中編輯排序后,作為文件刷新到磁盤上。注意列族是有數(shù)量限制的,每一個(gè)列族有一個(gè)MemStore,當(dāng)MemStore滿了,則進(jìn)行刷新。它也會(huì)保持最后一次寫(xiě)的序列號(hào),這讓系統(tǒng)知道直到現(xiàn)在都有什么已經(jīng)被持久化了。最高的序列號(hào)作為一個(gè)metafield存儲(chǔ)在HFile中,來(lái)顯示持久化在哪里結(jié)束,在哪里繼續(xù)。當(dāng)一個(gè)region啟動(dòng)后,讀取序列號(hào),最高的則作為新編輯的序列號(hào)。HBaseRegion刷新(Flush)HBASE數(shù)據(jù)存儲(chǔ)在HFile,HFile存儲(chǔ)鍵值,當(dāng)MemStore積累到足夠的數(shù)據(jù),整個(gè)排序的鍵值集合會(huì)寫(xiě)入到HDFS中新的HFile中。這是一個(gè)順序的寫(xiě),非???,能避免移動(dòng)磁頭。HBaseHFileHBASEHFile包含一個(gè)多層的索引,這樣不必讀取整個(gè)文件就能查找到數(shù)據(jù),多層索引像一個(gè)B+樹(shù)。鍵值對(duì)以升序存儲(chǔ)。在64K的塊中,索引通過(guò)行健指向鍵值對(duì)的數(shù)據(jù)。每個(gè)塊有自己的葉子索引。每個(gè)塊的最后的鍵被放入到一個(gè)中間索引中。根索引指向中間索引。HFile的結(jié)構(gòu)trailer(追蹤器)指向meta的塊,并在持久化到文件的最后時(shí)被寫(xiě)入。trailer擁有bloom過(guò)濾器的信息以及時(shí)間范圍(timerange)的信息。Bloom過(guò)濾器幫助跳過(guò)那些不含行健的文件,時(shí)間范圍(timerange)則跳過(guò)那些不包含在時(shí)間范圍內(nèi)的文件。HBASE索引是在HFile打開(kāi)并放入內(nèi)存中時(shí)被加載的,這允許在單個(gè)磁盤上執(zhí)行查找HFileIndexHBASE一個(gè)行的鍵值單元格可以被存儲(chǔ)在很多地方,行單元格已經(jīng)被存儲(chǔ)到HFile中、在MemStore最近被更新的單元格、在Blockcache最佳被讀取的單元格,所以當(dāng)你讀取一行數(shù)據(jù)時(shí),系統(tǒng)怎么能把相對(duì)應(yīng)的單元格內(nèi)容返回呢?一次讀把blockcache,MemStore,andHFiles中的鍵值合并的步驟如下:首先,掃描器(scanner)在讀緩存的Blockcache尋找行單元格,最近讀取的鍵值緩存在Blockcache中,當(dāng)內(nèi)存需要時(shí)剛使用過(guò)的(LeastRecentlyUsed)將會(huì)被丟棄。接下來(lái),掃描器(scanner)將在MemStore中查找,以及在內(nèi)存中最近被寫(xiě)入的寫(xiě)緩存。如果掃描器(scanner)在MemStore和BlockCache沒(méi)有找到所有的數(shù)據(jù),則HBase將使用BlockCache的索引以及bloom過(guò)濾器把含有目標(biāo)的行單元格所在的HFiles加載到內(nèi)存中。HBase讀合并HBASE每個(gè)MemStore有許多HFiles文件,這樣對(duì)一個(gè)讀取操作來(lái)說(shuō),多個(gè)文件將不得不被多次檢查,勢(shì)必會(huì)影響性能,這種現(xiàn)象叫做讀放大(readamplification)。HBase讀合并HBASEHBase將會(huì)自動(dòng)把小HFiles文件重寫(xiě)為大的HFiles文件,這個(gè)過(guò)程叫做minorcompaction。輔助壓縮減少文件的數(shù)量,并執(zhí)行合并排序HBase輔壓縮(minorcompaction)HBASE主壓縮將會(huì)合并和重寫(xiě)一個(gè)region的所有HFile文件,根據(jù)每個(gè)列族寫(xiě)一個(gè)HFile文件,并在這個(gè)過(guò)程中,刪除deleted和expired的單元格,這將提高讀性能。然而因?yàn)橹鲏嚎s重寫(xiě)了所有的文件,這個(gè)過(guò)程中將會(huì)導(dǎo)致大量的磁盤IO操作以及網(wǎng)絡(luò)擁堵。我們把這個(gè)過(guò)程叫做寫(xiě)放大(writeamplification)。HBase主壓縮(MajorCompaction)HBASE一個(gè)表將被水平分割為一個(gè)或多個(gè)Region,一個(gè)Region包含相鄰的起始鍵和結(jié)束鍵之間的行的排序后的區(qū)域。每個(gè)region默認(rèn)1GB一個(gè)region的表通過(guò)RegionServer向客戶端提供服務(wù)一個(gè)regionserver可以服務(wù)1000個(gè)regionRegion=臨近的鍵HBASE初始時(shí)一個(gè)table在一個(gè)region中,當(dāng)一個(gè)region變大之后,將會(huì)被分裂為2個(gè)子region,每個(gè)子Region代表一半的原始Region,在一個(gè)相同的Regionserver中并行打開(kāi)。然后把分裂報(bào)告給HMaster。因?yàn)樾枰?fù)載均衡的緣故,HMaster可能會(huì)調(diào)度新的Region移動(dòng)到其他的Server上。Region分裂HBASE分裂一開(kāi)始發(fā)生在相同的regionserver上,但是由于負(fù)載均衡的原因。HMaster可能會(huì)調(diào)度新的Region被移動(dòng)到其他的服務(wù)器上。導(dǎo)致的結(jié)果是新的RegionServer提供數(shù)據(jù)的服務(wù)需要讀取遠(yuǎn)端的HDFS節(jié)點(diǎn)。直到主壓縮把數(shù)據(jù)文件移動(dòng)到Regionsserver本地節(jié)點(diǎn)上,Hbase數(shù)據(jù)當(dāng)寫(xiě)入時(shí)是本地的,但是當(dāng)一個(gè)region移動(dòng)(諸如負(fù)載均衡或是恢復(fù)操作等),它將不會(huì)是本地的,直到做了主壓縮的操作(majorcompaction.)讀負(fù)載均衡(ReadLoadBalancing)HBASE所有的讀寫(xiě)操作發(fā)生在主節(jié)點(diǎn)上,HDFS復(fù)制WAL和HFile塊,HFile復(fù)制是自動(dòng)發(fā)生的,HBase依賴HDFS提供數(shù)據(jù)的安全當(dāng)數(shù)據(jù)寫(xiě)入HDFS,本地化地寫(xiě)入一個(gè)拷貝,然后復(fù)制到第二個(gè)節(jié)點(diǎn),然后復(fù)制到第三個(gè)節(jié)點(diǎn)。WAL文件和HFile文件通過(guò)磁盤和復(fù)制進(jìn)行持久化,那么HBase怎么恢復(fù)還沒(méi)來(lái)得及進(jìn)行持久化到HFile中的MemStore更新呢?HDFS數(shù)據(jù)復(fù)制HBASE當(dāng)一個(gè)RegionServer掛掉了,壞掉的Region不可用直到發(fā)現(xiàn)和恢復(fù)的步驟發(fā)生。Zookeeper決定節(jié)點(diǎn)的失敗,然后失去regionserver的心跳。然后HMaster將會(huì)被通知RegionServer已經(jīng)掛掉了。當(dāng)HMaster檢查到regionserver已經(jīng)掛掉后,HMaster將會(huì)把故障Server上的Region重寫(xiě)分配到活躍的Regionservers上。為了恢復(fù)宕掉的regionserver,memstore將不會(huì)刷新到磁盤上,HMaster分裂屬于regionserver的WAL到單獨(dú)的文件,然后存儲(chǔ)到新的regionservers的數(shù)據(jù)節(jié)點(diǎn)上,每個(gè)RegionServer從單獨(dú)的分裂的WAL回放WAL。來(lái)重建壞掉的Region的MemStore。HBase故障恢復(fù)HBASEWAL文件包含編輯列表,一個(gè)編輯代表一個(gè)單獨(dú)的put、delete.Edits是按時(shí)間的前后順序排列地寫(xiě)入,為了持久化,增加的文件將會(huì)Append到WAL文件的末尾。當(dāng)數(shù)據(jù)在內(nèi)存中而沒(méi)有持久化到磁盤上時(shí)失敗了將會(huì)發(fā)生什么?通過(guò)讀取WAL將WAL文件回放,添加和排序包含的edits到當(dāng)前的MemStore,最后MemStore刷新將改變寫(xiě)入到HFile中。HBase故障恢復(fù)HBASEHBase架構(gòu)的優(yōu)點(diǎn)強(qiáng)一致模型:當(dāng)寫(xiě)操作返回時(shí),所有的讀將看到一樣的結(jié)果自動(dòng)擴(kuò)展:Regions隨著數(shù)據(jù)變大

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論