HBase遷移資料方案1(兩個叢集不能通訊)
阿新 • • 發佈:2019-02-11
前一篇文章裡面介紹了 兩個可以直接通訊的叢集之間很容易拷貝資料從而遷移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- /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/table1bin/hbase org.jruby.Main bin/add_table.rb /hbase/table1
另外:
1、如果表的資料量過大呢? 那麼按照該表在HDFS中的資料夾資料,分批拷貝。
2、如果兩個叢集可以互相通訊呢?那麼更爽了,直接使用distcp對拷,是並行的。