HBase不同版本集群之间数据迁移
本文摘自:https://www.dazhuanlan.com/2019/10/20/5dac43ffeb75a/
由于HBase CDH4和CDH5數(shù)據(jù)格式不兼容,所以不能用“CopyTable”之類的方法來(lái)進(jìn)行數(shù)據(jù)遷移。取而代之的方法有兩個(gè):
export
在CDH4集群上,將制定表的數(shù)據(jù)導(dǎo)出為sequence file到指定目錄,基本命令如下:
hbase org.apache.hadoop.hbase.mapreduce.Export [options] <tablename> <export_directory>tablename: 需要導(dǎo)出的表名
export_directory: 數(shù)據(jù)導(dǎo)出到的hdfs目錄
options:可以指定參數(shù)用于精細(xì)化的控制,格式為[-D <property=value>]*,例如
distcp
將CDH4集群導(dǎo)出到export_directory目錄中的sequence file拷貝到CDH5集群,這里用到hadoop的distcp命令,用于在不同hadoop集群間拷貝文件
hadoop distcp -p -update -skipcrccheck hftp://cdh4-namenode:port/export_directory hdfs://cdh5-namenode/import_directory注意distcp命令一定要在目標(biāo)集群(CDH5)上執(zhí)行
distcp會(huì)在文件拷貝完成后比較源文件和目標(biāo)文件的checksum,由于CDH4和CDH5的默認(rèn)checksum算法不一致,CDH4使用CRC32,CDH5使用CRC,因此任務(wù)有可能會(huì)失敗,這里指定-skipcrccheck可以忽略這一步驟,或者通過(guò)-Ddfs.checksum.type=CRC32來(lái)指定checksum算法
import
在import之前,需要先在CDH5集群建表,column family必須和CDH4的表保持一致
然后將distcp過(guò)來(lái)的sequence file導(dǎo)入HBase表中,命令如下
hbase -Dhbase.import.version=0.94 org.apache.hadoop.hbase.mapreduce.Import <tablename> <import_directory>hbase.import.version指定源集群(CDH4)的HBase版本
拷貝HFile
另一種方案是直接將HFile從CDH4拷貝到CDH5的hdfs文件系統(tǒng)里,然后升級(jí)HFile
distcp
hadoop distcp -p -update -skipcrccheck webhdfs://cdh4-namenode:http-port/hbase hdfs://cdh5-namenode:rpc-port/hbaseupgrade
啟動(dòng)CDH5集群,HBase會(huì)自動(dòng)檢測(cè)并升級(jí)HFile
總結(jié):
總體來(lái)講第一種方案耗時(shí)更長(zhǎng),因?yàn)樾枰M(jìn)行三次mapreduce,但更建議用第一種方案,import/export的機(jī)制擁有更高的靈活性,你可以定時(shí)增量的遷移數(shù)據(jù)。除非數(shù)據(jù)量太大導(dǎo)致export和import耗費(fèi)太長(zhǎng)時(shí)間才考慮第二種方案。
之前說(shuō)到第二種方案做upgrade時(shí)需要重啟集群,實(shí)際上有辦法避免,方法如下
拷貝.tableinfo.0000000001文件
hadoop fs -mkdir -p /hbase/data/default/<tablename>/.tabledesc hadoop fs -mv /hbase/data/default/<tablename>/.tableinfo.0000000001 /hbase/data/default/<tablename>/.tabledesc注:這一步是因?yàn)镃DH4的.tableinfo.0000000001文件在根目錄下,CDH5的在.tabledesc下
修復(fù)meta
hbase hbck -fixMeta重新分配rs
hbase hbck -fixAssignments總結(jié)
以上是生活随笔為你收集整理的HBase不同版本集群之间数据迁移的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 电饭锅不锈钢内胆和不粘锅内胆哪个好
- 下一篇: 1、django安装,问题,创建项目,编