2017-05-18 52 views
0

我擁有一個存儲超過10TB數據的Hbase集羣,現在我必須將這些數據遷移到新的集羣中,我該怎麼做?如何將現有的Hbase數據遷移到新集羣

我知道Hbase備份有完整的關閉備份(Distcp)和Live羣集備份(複製,導出和複製表)。

在我的情況下,我們不能容忍定期關閉我們的Hbase集羣,並且我知道Replication無法複製歷史數據,所以這意味着我們可以使用Export或CopyTable?


我有兩個問題:我們使用導出或CopyTable或他人

1.Should?爲什麼?

2.如果我們使用Export或CopyTable,由於集羣已啓動,在複製過程中可能會錯過編輯,如何避免它?

回答

0

CopyTable

CopyTable將直接將數據寫入到一個現有的HBase的表。這可以在同一個羣集或遠程羣集中完成。 這兩個羣集都應該聯機以完成此操作。用來HBase的表中的數據導出爲純序列文件在HDFS文件夾

出口

出口。創建一個MapReduce作業,調用HBase集羣從指定表中獲取數據並將其寫入HDFS文件夾。

我寧願你使用copytable而不是export,因爲MR作業需要時間。

參考:Dzone HBase

+0

謝謝您的回答〜我知道我們可以使用CopyTable,但參考指南中提到「由於集羣已啓動,複製過程中可能會錯過編輯的風險」,因此如何避免此問題? –

0

給出了兩個集羣,clusteA在,ClusterB,一個TableX的需要遷移。

從簇A遷移TableX的到羣集B.

  1. 添加複製對等 '99' 從A-> B
  2. 上形成殼,enable_table_replication 'TableX的'
  3. 上形成殼,disable_peer' 99' TableX的 ' 'tablex_snapshot'
  4. 的機器上,出口的快照,斌/ HBase的org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot 'tablex_snapshot' -copy到上的一個殼,快照
  5. ' HDFS:// clusterB:8020/U SER/HBase的第B殼,restore_snapshot 'tablex_snapshot', 'TableX的'
  6. 上形成殼,enable_peer '99'

完成-mappers 16

  • 相關問題