HBase數(shù)據(jù)備份恢復的方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種HBase數(shù)據(jù)備份恢復的方法和裝置,包括:在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Region中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份;在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。本發(fā)明能夠高效且完整地對HBase數(shù)據(jù)進行備份恢復。
【專利說明】HBase數(shù)據(jù)備份恢復的方法和裝置
【技術領域】
[0001]本發(fā)明涉及數(shù)據(jù)處理【技術領域】,尤其涉及一種HBase (Hadoop Database)數(shù)據(jù)備份恢復的方法和裝置。
【背景技術】
[0002]伴隨著海量數(shù)據(jù)時代的到來,計算模型也經(jīng)歷著多種模式的演變。從單一的計算機到分布式計算的演變過程是持續(xù)增長數(shù)據(jù)量的必然趨勢?,F(xiàn)階段,大數(shù)據(jù)集的分析、管理、挖掘等需求都是傳統(tǒng)的數(shù)據(jù)庫無法勝任的,據(jù)統(tǒng)計,數(shù)據(jù)庫工具處理的結構化數(shù)據(jù)是在GB級別上,傳統(tǒng)技術無法適應這種擴展性?,F(xiàn)擁有的技術和工具中,最成熟的是Hadoop文件存儲計算框架及架構于其上的相關組件。Hadoop本身由Hadoop分布式文件系統(tǒng)(HDFS,Hadoop Distributed File System)和分布式計算框架MapReduce 組成,其中 MapReduce 計算框架主要適用于批量文件處理,而在實時數(shù)據(jù)分析處理方面主要運用的技術是HBase。
[0003]HBase是建立在分布式文件系統(tǒng)HDFS之上,是一個提供高可靠性、列存儲、高性能、可伸縮、能實時讀寫的分布式數(shù)據(jù)庫系統(tǒng)。它介于非關系型數(shù)據(jù)庫和關系型數(shù)據(jù)庫之間,能通過主鍵及主鍵范圍來檢索數(shù)據(jù)。在HBase中的數(shù)據(jù)是隨時間而變化的,如果想要使用某一時間段的數(shù)據(jù)需要對其進行備份恢復。因此,HBase數(shù)據(jù)備份恢復是非常重要的。
[0004]在HBase中數(shù)據(jù)是分成兩部分存儲的,一部分是在內存中,另一部分是以HFile (Hadoop File)文件的形式持久化到HDFS上。因此,在執(zhí)行數(shù)據(jù)備份恢復時需將兩部分的內容進行備份恢復,但是,現(xiàn)有的HBase數(shù)據(jù)備份恢復方法在進行HBase數(shù)據(jù)備份恢復時需要對HBase的服務進行停止,影響用戶操作,而且根據(jù)HBase中的日志文件進行數(shù)據(jù)備份恢復,難以保證在備份恢復時兩部分內容的數(shù)據(jù)完整性。
【發(fā)明內容】
[0005]為了解決上述技術問題,本發(fā)明提供了一種HBase數(shù)據(jù)備份恢復方法和裝置,能夠高效且完整地對HBase數(shù)據(jù)進行備份恢復。
[0006]為了達到本發(fā)明目的,本發(fā)明提供了一種HBase數(shù)據(jù)備份恢復方法,包括:在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份;在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
[0007]進一步地,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復,包括:若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),將所需要恢復的數(shù)據(jù)對應的引用文件放入HBase表中對應Reg1n文件夾下,進行持久化數(shù)據(jù)恢復。
[0008]進一步地,進行持久化數(shù)據(jù)恢復是在HBase的Reg1n進行合并時整理成完整的數(shù)據(jù),合并操作是將多個HFile文件合并成大文件,在達到HBase合并配置參數(shù)值時自動觸發(fā)。
[0009]進一步地,日志文件包括執(zhí)行操作的HBase表、執(zhí)行操作的HBase表對應的Reg1n和進行的相應執(zhí)行操作。
[0010]進一步地,若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復,包括:若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件中對應的HBase表名稱和Reg1n名稱,將日志文件恢復到相應的Reg1n文件夾下;當引用文件及日志放置到Reg1n文件夾下相應的位置時,啟動HBase表,Reg1n被分配到相應的Reg1nServer中,且Reg1n會讀取對應的日志文件到自己內部的MemStore中,完成HBase數(shù)據(jù)恢復。
[0011]一種HBase數(shù)據(jù)備份恢復裝置,包括:備份單元,用于在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份;恢復單元,用于在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
[0012]與現(xiàn)有技術相比,本發(fā)明包括:在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份;在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。本發(fā)明通過將HBase內存中的數(shù)據(jù)刷到HFile文件中,統(tǒng)一對HFile文件進行備份操作,保證了在備份恢復時HBase中內存和HDFS兩部分內容的數(shù)據(jù)完整性。此外,為每個HFile文件創(chuàng)建相應的引用文件,即對HBase中存儲數(shù)據(jù)的位置進行備份,在進行數(shù)據(jù)恢復時,通過引用文件進行HBase的數(shù)據(jù)恢復,保證了在進行HBase數(shù)據(jù)備份恢復時數(shù)據(jù)的正常使用。因此,能夠高效且完整地對HBase數(shù)據(jù)進行備份恢復。
【專利附圖】
【附圖說明】
[0013]圖1是本發(fā)明HBase存儲數(shù)據(jù)的框架示意圖。
[0014]圖2是本發(fā)明HBase數(shù)據(jù)備份恢復方法的流程示意圖。
[0015]圖3是本發(fā)明本發(fā)明HBase數(shù)據(jù)備份恢復裝置的結構示意圖。
【具體實施方式】
[0016]下面結合附圖對本發(fā)明進行進一步的詳細說明。通過足夠詳細的描述這些實施示例,使得本領域技術人員能夠實踐本發(fā)明。在不脫離本發(fā)明的主旨和范圍的情況下,可以對實施做出邏輯的、實現(xiàn)的和其他的改變。
[0017]圖1是本發(fā)明HBase存儲數(shù)據(jù)的框架示意圖。如圖1所示,HBase表邏輯上是以Reg1n的形式保存在Reg1nServer中。當HBase表對應的記錄數(shù)不斷增大超過一定閾值后,會自動分裂成多個Reg1n,不同的Reg1n會被Master分配給相應的Reg1nServer進行管理。
[0018]Reg1n是HBase中分布式存儲和負載均衡的最小單元,不同的Reg1n可以分到不同的Reg1nServer上,但一個Reg1n不能拆分到多個Reg1nServer上。值得注意的是,Reg1n是分布式存儲的最小單元,但不是存儲的最小單元,存儲的最小單元是Store。
[0019]Reg1n是由一個或多個Store組成,每個Store保存一個列族,每個Store又由一個內存(MemStore)和多個StoreFile組成,其中StoreFile是以HFile的形式持久化在HDFS上。因此,在HBase數(shù)據(jù)備份時需要對MemStore和HFile文件進行備份,在HBase數(shù)據(jù)恢復時需要對HFile文件及MemStore的數(shù)據(jù)進行恢復。
[0020]圖2是本發(fā)明HBase數(shù)據(jù)備份恢復方法的流程示意圖,如圖2所示,該方法首先對HBase數(shù)據(jù)進行備份,然后再進行HBase數(shù)據(jù)的恢復,具體包括:
[0021]步驟21,在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中。
[0022]在本步驟中,HBase中數(shù)據(jù)是分成兩部分存儲的,一部分是在HBase內存中,另一部分是以HFile文件的形式持久化到HDFS上。
[0023]在對HBase數(shù)據(jù)進行備份時,首先將HBase內存中的數(shù)據(jù)刷到HFile中,保證所有的數(shù)據(jù)都被持久化,則后續(xù)就可以統(tǒng)一對HFile文件進行相應的備份操作。
[0024]步驟22,為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份。
[0025]步驟23,在HBase數(shù)據(jù)進行恢復時,判斷所需要恢復的數(shù)據(jù)是否是持久化數(shù)據(jù),如果是,進入步驟24 ;如果否,進入步驟25。
[0026]步驟24,根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復。
[0027]本步驟具體為:將所需要恢復的數(shù)據(jù)對應的引用文件放入HBase表中對應Reg1n文件夾下,進行持久化數(shù)據(jù)恢復。該引用文件占用的磁盤空間很小,所以拷貝的速度會很快。
[0028]在讀取數(shù)據(jù)時,根據(jù)引用文件,在備份文件夾中找到對應的數(shù)據(jù)進行讀取。
[0029]持久化數(shù)據(jù)恢復是在HBase的Reg1n進行合并時才整理成完整的數(shù)據(jù)。合并操作是在達到HBase合并配置參數(shù)的值時自動觸發(fā)的,合并操作會將多個HFile文件合并成大文件,這樣可以使得在查詢等操作時不用打開多個文件,只需要打開一個文件即可。如此,可以使得HBase數(shù)據(jù)恢復后盡快的提供服務,提高了效率。
[0030]步驟25,根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
[0031]本步驟是對尚未持久化的數(shù)據(jù)進行恢復,通過恢復日志文件中的數(shù)據(jù)進行對HBase內存數(shù)據(jù)進行恢復。在進行HBase內存數(shù)據(jù)恢復時,每個Reg1n中都有屬于自己的內存,因此,需要對每個Reg1n的內存進行恢復數(shù)據(jù)。
[0032]HBase的日志文件是對每一個操作進行記錄,該日志文件包括執(zhí)行操作的HBase表、該執(zhí)行操作的HBase表對應的Reg1n及進行的相應執(zhí)行操作。根據(jù)日志文件中對應的HBase表名稱和Reg1n名稱,將日志文件恢復到相應的Reg1n文件夾下。
[0033]當引用文件及日志都放置到了 Reg1n文件夾下相應的位置時,就可以啟動HBase表。當啟動HBase表時,Reg1n會被分配到相應的Reg1nServer中,且Reg1n會讀取對應的日志文件到自己內部的MemStore中,完成了 HBase數(shù)據(jù)恢復。
[0034]本發(fā)明通過將HBase內存中的數(shù)據(jù)刷到HFile文件中,統(tǒng)一對HFile文件進行備份操作,保證了在備份恢復時HBase中內存和HDFS兩部分內容的數(shù)據(jù)完整性。此外,為每個HFile文件創(chuàng)建相應的引用文件,即對HBase中存儲數(shù)據(jù)的位置進行備份,在進行數(shù)據(jù)恢復時,通過引用文件進行HBase的數(shù)據(jù)恢復,保證了在進行HBase數(shù)據(jù)備份恢復時數(shù)據(jù)的正常使用。因此,能夠高效且完整地對HBase數(shù)據(jù)進行備份恢復。
[0035]圖3是本發(fā)明HBase數(shù)據(jù)備份恢復裝置的結構示意圖,如圖3所示,具體包括:
[0036]備份單元,用于在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中 '為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份;
[0037]恢復單元,用于在HBase數(shù)據(jù)進行恢復時,判斷所需要恢復的數(shù)據(jù)是否是持久化數(shù)據(jù)HFile文件,如果是,根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;如果否,根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
[0038]HBase數(shù)據(jù)備份恢復裝置是和HBase數(shù)據(jù)備份恢復方法對應的,因此,具體的實現(xiàn)細節(jié)可參看HBase數(shù)據(jù)備份恢復方法,在此不贅述。
[0039]本發(fā)明HBase數(shù)據(jù)備份恢復裝置通過將HBase內存中的數(shù)據(jù)刷到HFile文件中,統(tǒng)一對HFile文件進行備份操作,保證了在備份恢復時HBase中內存和HDFS兩部分內容的數(shù)據(jù)完整性。此外,為每個HFile文件創(chuàng)建相應的引用文件,即對HBase中存儲數(shù)據(jù)的位置進行備份,在進行數(shù)據(jù)恢復時,通過引用文件進行HBase的數(shù)據(jù)恢復,保證了在進行HBase數(shù)據(jù)備份恢復時數(shù)據(jù)的正常使用。因此,能夠高效且完整地對HBase數(shù)據(jù)進行備份恢復。
[0040]應當理解,雖然本說明書根據(jù)實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術方案,說明書的這種敘述方式僅僅是為清楚起見,本領域技術人員應當將說明書作為一個整體,各實施方式中的技術方案也可以經(jīng)適當組合,形成本領域技術人員可以理解的其他實施方式。
[0041]上文所列出的一系列的詳細說明僅僅是針對本發(fā)明的可行性實施方式的具體說明,它們并非用于限制本發(fā)明的保護范圍,凡未脫離本發(fā)明技藝精神所作的等效實施方式或變更均應包含在本發(fā)明的保護范圍之內。
【權利要求】
1.一種HBase數(shù)據(jù)備份恢復的方法,其特征在于,包括: 在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份; 在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
2.根據(jù)權利要求1所述的HBase數(shù)據(jù)備份恢復的方法,其特征在于,所述若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復,包括: 若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),將所需要恢復的數(shù)據(jù)對應的引用文件放入HBase表中對應Reg1n文件夾下,進行持久化數(shù)據(jù)恢復。
3.根據(jù)權利要求1或2所述的HBase數(shù)據(jù)備份恢復的方法,其特征在于,所述進行持久化數(shù)據(jù)恢復是在HBase的Reg1n進行合并時整理成完整的數(shù)據(jù),合并操作是將多個HFile文件合并成大文件,在達到HBase合并配置參數(shù)值時自動觸發(fā)。
4.根據(jù)權利要求1所述的HBase數(shù)據(jù)備份恢復的方法,其特征在于,所述日志文件包括執(zhí)行操作的HBase表、執(zhí)行操作的HBase表對應的Reg1n和進行的相應執(zhí)行操作。
5.根據(jù)權利要求4所述的HBase數(shù)據(jù)備份恢復的方法,其特征在于,所述若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復,包括: 若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件中對應的HBase表名稱和Reg1n名稱,將日志文件恢復到相應的Reg1n文件夾下;當引用文件及日志放置到Reg1n文件夾下相應的位置時,啟動HBase表,Reg1n被分配到相應的Reg1nServer中,且Reg1n會讀取對應的日志文件到自己內部的MemStore中,完成HBase數(shù)據(jù)恢復。
6.一種HBase數(shù)據(jù)備份恢復裝置,其特征在于,包括: 備份單元,用于在HBase數(shù)據(jù)進行備份時,將HBase內存中的數(shù)據(jù)刷到HFile文件中;為HBase表結構下的每個Reg1n中的每個HFile文件創(chuàng)建相應的引用文件,對每個HBase表的HFile文件進行備份; 恢復單元,用于在HBase數(shù)據(jù)進行恢復時,若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復;若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復。
7.根據(jù)權利要求6所述的HBase數(shù)據(jù)備份恢復裝置,其特征在于,所述恢復單元,用于若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),根據(jù)所需要恢復的數(shù)據(jù)對應的引用文件,進行持久化數(shù)據(jù)恢復,包括: 所述恢復單元用于若所需要恢復的數(shù)據(jù)是持久化數(shù)據(jù),將所需要恢復的數(shù)據(jù)對應的引用文件放入HBase表中對應Reg1n文件夾下,進行持久化數(shù)據(jù)恢復。
8.根據(jù)權利要求6或7所述的HBase數(shù)據(jù)備份恢復裝置,其特征在于,所述進行持久化數(shù)據(jù)恢復是在HBase的Reg1n進行合并時整理成完整的數(shù)據(jù),合并操作是將多個HFile文件合并成大文件,在達到HBase合并配置參數(shù)值時自動觸發(fā)。
9.根據(jù)權利要求6所述的HBase數(shù)據(jù)備份恢復裝置,其特征在于,所述日志文件包括執(zhí)行操作的HBase表、執(zhí)行操作的HBase表對應的Reg1n和進行的相應執(zhí)行操作。
10.根據(jù)權利要求9所述的HBase數(shù)據(jù)備份恢復裝置,其特征在于,所述恢復單元,用于若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件,對HBase內存數(shù)據(jù)進行恢復,包括: 所述恢復單元用于若所需要恢復的數(shù)據(jù)是內存數(shù)據(jù),根據(jù)日志文件中對應的HBase表名稱和Reg1n名稱,將日志文件恢復到相應的Reg1n文件夾下;當引用文件及日志放置到Reg1n文件夾下相應的位置時,啟動HBase表,Reg1n被分配到相應的Reg1nServer中,且Reg1n會讀取對應的日志文件到自己內部的MemStore中,完成HBase數(shù)據(jù)恢復。
【文檔編號】G06F17/30GK104199963SQ201410483014
【公開日】2014年12月10日 申請日期:2014年9月19日 優(yōu)先權日:2014年9月19日
【發(fā)明者】劉璧怡, 郭美思, 吳楠 申請人:浪潮(北京)電子信息產(chǎn)業(yè)有限公司