天天看點

HBase資料導入工具總結

本文對hbase常用的資料導入工具進行介紹,并結合雲hbase常見的導入場景,給出建議的遷移工具和參考資料。

hbase提供了幾種資料遷移工具,其中基于api調用的有copytable,export&import。基于寫hdfs的有distcp,snapshot。

這裡要說明的是,本文作為一般性的介紹,不能忽略常用的工具distcp和snapshot,但是由于雲hbase預設不開啟hdfs端口,是以在雲hbase上面基于hdfs的方法都是用不了的。我們推薦使用者使用copytable進行遷移,根據我們的測試,copytable的性能足以支撐10t以下資料的遷移。如果您的資料量比較大(超過10t),可以聯系雲hbase從業人員單獨為您處理。

copytable是hbase提供的一個資料同步工具,可以用于同步表的部分或全部資料。copytable通過運作一個map-reduce任務從源表讀出資料再寫入到目标表。

copytable使用很簡單,隻需要運作一個指令就可以。指令示例:

export将hbase表内容dump到一個順序檔案(sequence)中。import将export得到的順序檔案内容寫入hbase表。和copytable一樣,export和import也是通過運作map-reduce任務來執行的。

export和import指令格式:

distcp是hadoop提供的用于複制hdfs檔案的工具,經常也被用來同步hbase資料。

使用distcp進行資料同步的步驟如下:

(1)源叢集停止寫入。

(2)将資料檔案複制到目标叢集上。運作

(3)然後在目标叢集上執行

<code>hbase hbck -fixassignments -fixmeta</code>

hbase snapshot可以在對region-server影響很小的情況下建立快照、将快照複制到另一個叢集。

使用snapshot遷移資料的操作步驟如下:

(1)在源表上建立snapshot。

<code>hbase snapshot create -n $snapshotname -t $tablename</code>

(2)将snapshot拷貝到目标叢集的hdfs上。

(3)在目标叢集恢複snapshot。在hbase shell中執行<code>restore_snapshot '$snapshotname'</code>

其他類型資料向hbase導入常見的工具有:

(1)關系資料庫可以使用sqoop導入。

(2)其他類型資料可以使用datax。

(3)如果是周期性資料導入需求,可以使用資料內建。

sqoop是一個用來将hadoop和關系型資料庫中的資料互相轉移的工具。sqoop的資料同步也是通過map-reduce實作的。

使用sqoop同步資料隻需要運作一個指令就可以。指令示例:

datax 是廣泛使用的離線資料同步工具/平台,實作包括 mysql、oracle、sqlserver、postgre、hdfs、hive、ads、hbase、ots、odps 等各種異構資料源之間高效的資料同步功能。

datax本身作為資料同步架構,将不同資料源的同步抽象為從源頭資料源讀取資料的reader插件,以及向目标端寫入資料的writer插件,理論上datax架構可以支援任意資料源類型的資料同步工作。同時datax插件體系作為一套生态系統, 每接入一套新資料源該新加入的資料源即可實作和現有的資料源互通。

使用datax進行資料同步的步驟如下:

(2)運作datax。執行指令<code>python datax.py $config.json</code>

資料內建是阿裡集團對外提供的的資料同步平台,其底層也基于datax。由于資料內建提供了排程的功能,是以很适合用于周期性導入資料或是與其他任務有依賴關系的情況。

場景

建議遷移工具

參考資料

hbase-&gt;hbase,資料量&lt;10t

copytable

<a href="https://yq.aliyun.com/articles/176546">使用copytable同步hbase資料</a>

hbase-&gt;hbase,資料量&gt;10t

聯系雲hbase從業人員處理

hbase經典網絡叢集遷移到vpc網絡

使用classiclink打通網絡。遷移工具參考具體場景

<a href="https://yq.aliyun.com/articles/328405">hbase經典網絡叢集遷移到vpc網絡</a>

關系型資料庫-&gt;hbase

sqoop

<a href="https://yq.aliyun.com/articles/176524">使用sqoop從mysql向雲hbase同步資料</a>

其他類型資料源一次性導入hbase

datax

<a href="https://github.com/alibaba/datax/wiki/quick-start">datax官方文檔</a>

導入phoenix表

<a href="https://github.com/alibaba/datax/blob/master/hbase11xsqlwriter/doc/hbase11xsqlwriter.md">hbase11xsqlwriter插件文檔</a>

其他類型資料源周期性導入hbase

資料內建