?

應用Hbase快照機制

2018-03-03 04:48
網絡安全和信息化 2018年5期
關鍵詞:整張快照命令

在Hbase中快照實際上就是一份元信息的合集,在對表進行快照時,并不會涉及到表中實際數據的拷貝,而是僅僅拷貝關于該表的一些元數據信息。

例如組成表Region info,Descriptor描述信息以及與其對應的HFile文件的引用等內容。

在Hbase中不僅可以對表進行快照操作,還可以利用快照將表恢復到之前的狀態,快照可以在線或者離線操作。

注意:Hbase中的快照是基于文件系統級別進行的。

實際上,利用Hbase的快照操作可以對表進行備份。在Hbase中對于表的備份包括表復制,導入導出表或者先將表關閉之后使用Distcp分布式拷貝來復制HDFS中關于表的Hfile文件等。

對于前兩種方式,實際上調用了MapReduce來掃描整張表的數據,然后將表復制出去。因為表數據是存放在RegionServer中的,所以需要RegionServer發生大量的I/O操作。將整張表的數據備份出去。

對于后一種方法,會將表關閉來停止所有的讀寫操作,在實際的生產環境中很難實現。

相比之下,在Hbase使用快照機制優勢就很明顯了,在使用快照過程中,管理員不需要拷貝整張表的數據,而直接克隆表的元數據信息,因為不涉及大量的I/O操作,這對Regionerver產生的影響最小。

另外,也可以將快照導出到其他Hbase集群,導出操作只是帶有一些額外的集群間的邏輯數據的同步而已。

使用快照完成表的備份,是在HDFS層面進行的,意味著HMaster和域服務器與操作無關,就無需為不必要的數據創建緩存空間,不會涉及對整張表的掃描。

使用常規的表備份方式,因為會創建大量的對象而引起GC暫停,這會對Hbase的性能造成影響,例如DataNode數據節點會產生額外的網絡和磁盤負載等。

對于快照來說,離線方式指的是將表Disbale掉,由Hbase Master來遍歷HDFS中的表的元數據和Hfile,從而建立引用關系。

在線方式就是在表正常訪問的情況下,其過程類似于Prepare和Commit兩階段的提交。

HMaster收到創建快照命令后,會作為Coordinator協調者從Hbase的Meta表中取出目標表的Region和對應的RregionServer信息,這些RegionServer就作為第二階段提交的Participant參與者,Prepare準備階段會將表的Region信息做快照,并存儲到HDFS的臨時目錄,在Commit提交階段會將HMaster把臨時目錄改成正確的目錄。在創建快照的過程中,HMaster和Region server都是通過Zookeeper進行數據共享的。

這里使用了Hbase集群,其中包含三個節點。在執行Hbase快照前,需要在主節點上進入Hbase的“conf”目 錄。 執 行“vi hbasesite.xml”命令,在其配置文件中找到“”行,將其下的一行修改為“”,來啟動Hbase的快照功能。

同理,在其他兩個節點上分別打開上述配置文件,在其中添加“hbase.snapshot.e n a b l e d”,“”,“”行。

然后,分別在以上節點的Hbase的“bin”目錄下執行“./stop-hbase.sh” 和“./start-hbase.sh”命令,來重啟Hbase使上述配置生效。

在主節點上執行“./hbase shell”命令,在控制臺中執行“list”命令,查看數據庫中存在的表信息。例如執行“scan ' product'”命令,查看“product”表的內容。

執 行“s n a p s h o t'product',' productsnapsh ot'” 命 令,針 對 該 表創建快照,快照名為“productsnapshot”。

在Linux命令行下進入Hadoop的“bin”目錄,執行“./hdfs dfs -ls /hbase/.hbase-snapshot”命令,查看快照文件存儲信息。

在其中打開名為“productsnapshot”的目錄,在其中包含“.snapshotinfo”和“data.manifest”兩個文件,存儲上述快照的元數據信息。

在Hbase控制臺下執行“list_snapshots”命令,可以查看快照信息,包括快照的名稱,源表以及創建的日期和時間等。

利用快照可以創建一張新的表,可以實現表的克隆操作,新表中的數據和創建快照時的表數據相同。針對克隆表的修改操作,不會影響快照以及原始表。

在Hbase控 制 臺下 執 行“clone_snap'p r o d u c t s n a p s h o t''klproduct'”命令,可以克隆出名為“klproduct”的新表。

利用快照可以將表恢復到快照創建時的狀態。

注意:在恢復時需要先將將表Disable掉。

例如執行“disable product”,“r e s t o r e_s n a p s h o t'productsnapshot'”,“enable 'product'”命令,可以將表恢復到之前的狀態。

執 行“delete_snapshot'productsnapshot'”命令,可以刪除指定的快照。

在Hbase集群環境中,可以將某集群中的Hbase快照導出到另外的集群中。

為此可以先在Linux中進入Hbase的“bin”目錄,執 行“hbase class org.apache.hadoop.hbase.s n a p s h o t.t o o l.ExportSnapshot-snapshot productsnapshot-copy-to hdfs:///hostname:9000/hbase-mappers 16”命令,可以將名為“productsnapshot”的快照復制到名為“hostname”的集群中。

猜你喜歡
整張快照命令
戳中皇帝的笑穴
面向Linux 非邏輯卷塊設備的快照系統①
EMC存儲快照功能分析
只聽主人的命令
比薩切塊
移防命令下達后
一種基于Linux 標準分區的快照方法
AB卷
這是人民的命令
讓時間停止 保留網頁游戲進度
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合