1. 程式人生 > >HBase遷移資料方案1(兩個叢集不能通訊)

HBase遷移資料方案1(兩個叢集不能通訊)

 

前一篇文章裡面介紹了 兩個可以直接通訊的叢集之間很容易拷貝資料從而遷移HBase資料。

但是如果兩個叢集在不同的網路,沒法通訊呢?

今天測試了一個方案:

把某個表(table1)從叢集1遷移到叢集2(兩個叢集互相看不見),步驟如下

1、拷貝叢集1的表文件到本地磁碟 :

Java程式碼 /app/cloud/hadoop/bin/hadoop fs -copyToLocal /hbase/table1 /data0/hbase-backup/table1  
/app/cloud/hadoop/bin/hadoop fs -copyToLocal /hbase/table1 /data0/hbase-backup/table1
 

2、對於檔案操作,很簡單吧,隨便你怎麼去拷貝來拷貝去

3、如果叢集2中也有對應的表文件,那麼刪除掉,然後拷貝

Java程式碼        /app/cloud/hadoop/bin/hadoop fs -rmr /hbase/table1   
  1. /app/cloud/hadoop/bin/hadoop fs -copyFromLocal /data0/hbase-backup/table1 /hbase/table1  
/app/cloud/hadoop/bin/hadoop fs -rmr /hbase/table1
/app/cloud/hadoop/bin/hadoop fs -copyFromLocal /data0/hbase-backup/table1 /hbase/table1

 4、重置該表在.META.表中的分割槽資訊

Java程式碼  bin/hbase org.jruby.Main bin/add_table.rb /hbase/table1  
bin/hbase org.jruby.Main bin/add_table.rb /hbase/table1

另外:

1、如果表的資料量過大呢? 那麼按照該表在HDFS中的資料夾資料,分批拷貝。

2、如果兩個叢集可以互相通訊呢?那麼更爽了,直接使用distcp對拷,是並行的。