HBase資料匯入工具總結

2021-09-23 09:24:58 字數 3384 閱讀 3730

本文對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使用很簡單,只需要執行乙個命令就可以。命令示例:

./bin/hbase org.apache.hadoop.hbase.mapreduce.copytable -dhbase.client.scanner.caching=200 -dmapreduce.local.map.tasks.maximum=16 -dmapred.map.tasks.speculative.execution=false --peer.adr=$zk_ip1,$zk_ip2,$zk_ip3:/hbase $table_name
copytable的使用和效能資料可參考:使用copytable同步hbase資料

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

export和import命令格式:

bin/hbase org.apache.hadoop.hbase.mapreduce.export []

bin/hbase org.apache.hadoop.hbase.mapreduce.import

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

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

(1)源集群停止寫入。

(2)將資料檔案複製到目標集群上。執行

hadoop distcp $srcfilepath $dstfilepath
(3)然後在目標集群上執行

hbase hbck -fixassignments -fixmeta

hbase snapshot可以在對region-server影響很小的情況下建立快照、將快照複製到另乙個集群。

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

(1)在源表上建立snapshot。

hbase snapshot create -n $snapshotname -t $tablename

(2)將snapshot拷貝到目標集群的hdfs上。

hbase org.apache.hadoop.hbase.snapshot.exportsnapshot -snapshot $snapshotname -copy-from $srcsnapshotpath -copy-to $dstsnapshotpath
(3)在目標集群恢復snapshot。在hbase shell中執行restore_snapshot '$snapshotname'

其他型別資料向hbase匯入常見的工具有:

(1)關聯式資料庫可以使用sqoop匯入。

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

(3)如果是週期性資料匯入需求,可以使用資料整合。

sqoop是乙個用來將hadoop和關係型資料庫中的資料相互轉移的工具。sqoop的資料同步也是通過map-reduce實現的。

使用sqoop同步資料只需要執行乙個命令就可以。命令示例:

sqoop import -dmapreduce.local.map.tasks.maximum=8 --connect jdbc:mysql://$mysqlurl:3306/$database --table $table --hbase-table $hbasetable --column-family $columnfamily --hbase-row-key $mysqlcolumn --username $mysqluser -m 8 -p
sqoop的使用可參考:使用sqoop從mysql向雲hbase同步資料

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

datax本身作為資料同步框架,將不同資料來源的同步抽象為從源頭資料來源讀取資料的reader外掛程式,以及向目標端寫入資料的writer外掛程式,理論上datax框架可以支援任意資料來源型別的資料同步工作。同時datax外掛程式體系作為一套生態系統, 每接入一套新資料來源該新加入的資料來源即可實現和現有的資料來源互通。

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

(1)編寫作業的配置檔案。配置檔案為json格式,具體格式可參考這裡

(2)執行datax。執行命令python datax.py $config.json

datax的使用可參考官方文件

資料整合是阿里集團對外提供的的資料同步平台,其底層也基於datax。由於資料整合提供了排程的功能,所以很適合用於週期性匯入資料或是與其他任務有依賴關係的情況。

使用資料整合同步資料的步驟較複雜,具體請參考這裡

場景建議遷移工具

參考資料

hbase->hbase,資料量<10t

copytable

使用copytable同步hbase資料

hbase->hbase,資料量》10t

聯絡雲hbase工作人員處理

hbase經典網路集群遷移到vpc網路

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

hbase經典網路集群遷移到vpc網路

關係型資料庫->hbase

sqoop

使用sqoop從mysql向雲hbase同步資料

其他型別資料來源一次性匯入hbase

datax

datax官方文件

匯入phoenix表

datax

hbase11xsqlwriter外掛程式文件

其他型別資料來源週期性匯入hbase

資料整合

step-by-step通過資料整合同步資料到hbase

資料整合概述

乾貨總結 Hive 資料匯入 HBase

思路是用 hbase 自帶的 importtsv 工具。建表語句,要用文字格式,即 tsv 格式,分割符可以自己定義 create table if not exists tablea rowkey string,partitioned by dt string format 2017 06 01 ...

hbase資料匯入

使用命令bin hbase org.apache.hadoop.hbase.mapreduce.importtsv dimporttsv.columns hbase row key,cf a,cf b,cf c 需要指出的是原始檔預設以 為分割符,如果需要換成其它分割符,在執行時加上 dimport...

HBase 資料匯入

記錄一下hbase 0.96.0 利用importtsv,completebulkload 和import匯入資料的方法。我的環境裡用的是yarn。1 利用importtsv 將cvs檔案匯入到hbase 步驟 a.在hbase裡面建立好table 命令 create hbase tbl 001 c...