日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

HBase不同版本集群之间数据迁移

發(fā)布時(shí)間:2024/9/27 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HBase不同版本集群之间数据迁移 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文摘自: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>]*,例如

指定導(dǎo)出的sequence file壓縮格式: -D mapreduce.output.fileoutputformat.compress=true -D mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec -D mapreduce.output.fileoutputformat.compress.type=BLOCK控制導(dǎo)出的內(nèi)容: -D hbase.mapreduce.scan.column.family=<familyName> -D hbase.mapreduce.include.deleted.rows=true -D hbase.mapreduce.scan.row.start=<ROWSTART> -D hbase.mapreduce.scan.row.stop=<ROWSTOP>控制導(dǎo)出性能: -D hbase.client.scanner.caching=100 -D mapreduce.map.speculative=false -D mapreduce.reduce.speculative=false對(duì)于大寬表,建議設(shè)置batch size: -D hbase.export.scanner.batch=10

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/hbase

upgrade

啟動(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。