使用CopyTable同步HBase數據

點擊查看全文html

 

CopyTable是Hbase提供的一個數據同步工具,能夠用於同步表的部分或所有數據。本文介紹如何使用CopyTable同步HBase數據。針對沒有hadoop集羣的用戶,還介紹了單機運行CopyTable的配置和參數。
根據咱們的測試,在表不壓縮的狀況下,單機版CopyTable能夠達到1小時100G左右的導入速度。10T如下的數據均可以使用CopyTable導入數據。node

準備工做

1 安裝HBase
CopyTable依賴於hadoop mapreduce。若是源HBase集羣中開啓了mapreduce則能夠直接在源集羣上運行。不然能夠在另外一個hadoop集羣上安裝HBase客戶端並將hbase-site.xml文件中的zk地址指向源集羣。
也能夠單機運行,單機運行時,不須要安裝hadoop,只要安裝了HBase就可使用hadoop的本地模式運行CopyTable。
安裝和配置HBase的過程能夠參考雲HBase相關文檔apache

2 建立目標表
使用CopyTable同步數據前,須要確保目標表存在。若是不存在須要先建立目標表。能夠根據數據的分佈狀況對目標表進行預分裂,這樣可以提升寫入速度。工具

3 其餘準備工做
須要將運行CopyTable的機器ip加入HBase的ip白名單,確保能夠訪問到HBase。
須要修改hbase-site.xml文件中的zk地址指向源集羣。oop

準備工做完成後,就能夠運行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經常使用選項說明以下:
startrow 開始行。
stoprow 中止行。
starttime 時間戳(版本號)的最小值。
endtime 時間戳的最大值。若是不指定starttime,endtime不起做用。
peer.adr 目標集羣的地址。格式爲:hbase.zookeeer.quorum:hbase.zookeeper.client.port:zookeeper.znode.parent
families 要同步的列族。多個列族用逗號分隔。
all.cells 刪除標記也進行同步。
更多參數參見官方文檔url

除copytable的參數外, 如下選項也建議在命令中進行設置:
(1)對於單機運行的狀況,須要指定mapreduce.local.map.tasks.maximum參數,表示並行執行的最大map個數。不指定的話默認是1,全部任務都是串行執行的。
(2)hbase.client.scanner.caching建議設置爲大於100的數。這個數越大,使用的內存越多,可是會減小scan與服務端的交互次數,對提高讀性能有幫助。
(3)mapred.map.tasks.speculative.execution建議設置爲false,避免因預測執行機制致使數據寫兩次。spa

另外,若是是在E-mapreduce集羣上執行CopyTable,須要注意E-mapreduce默認的hbase-site.xml文件中配置了phoenix,因此須要導入phoenix的jar包,不然運行時會報錯:
-libjars $HBASE_HOME/lib/phoenix-$PhoenixVersion-HBase-$HBaseVersion-server.jar.net

性能數據

 

點擊查看全文1

相關文章
相關標籤/搜索