hbase数据归档cos及cos导入hbase方案 - EMR

2022-11-17  本文已影响0人  彩色的炮灰

一、创建cos
地址:https://console.cloud.tencent.com/cos5/bucket

image.png image.png image.png

若上图·所示是未授权的,点击授权即可。

1 hdfs dfs -ls cosn://bucketName/

二、归档
脚本内容,可以不用脚本,自行替换变量即可。

 1 tableName=$1
 2 time=$(date "+%Y%m%d%H")
 3 echo "${time}"
 4 echo $tableName
 5 echo "flush '$tableName'" | /usr/local/service/hbase/bin/hbase shell

1 hdfs dfsadmin -allowSnapshot /hbase/data/default/$tableName

1 hdfs dfs -createSnapshot /hbase/data/default/tableName $tableName-snapshot

hdfs dfs -ls /hbase/data/default/$tableName/.snapshot/$tableName-snapshot

1 # 小于100G建议使用 cp
hdfs dfs -cp /hbase/data/default/$tableName/.snapshot/$tableName-snapshot
cosn://bucketName/"${TIME}"_$tableName
2
3 # 大于100G建议使用 distcp
/usr/local/service/hadoop/bin/hadoop distcp -i -update -skipcrccheck -m 50 -log
/tmp/distcp-logs -strategy dynamic -bandwidth 100
/hbase/data/default/$tableName/.snapshot/$tableName-snapshot
cosn://bucketName/"${TIME}"_$tableName

备注:根据实际数据量选择归档方式,可以简单写成:
/usr/local/service/hadoop/bin/hadoop distcp -i -update /hbase/data/default/$tableName/.snapshot/$tableName-snapshot cosn://bucketName/"${TIME}"_$tableName

1 hdfs dfs -deleteSnapshot /hbase/data/default/$tableName/ $tableName-snapshot

三、hbase修改TTL(单位为秒)

示例中修改TTL为365天

echo "alter 'TestTable',{NAME => 'info',TTL => '31536000'}" |
/usr/local/service/hbase/bin/hbase shell

四、cos备份数据导入hbase

image.png

当前表中没有任何数据,现在将cos中的归档数据导入hbase中

1 hdfs dfs -mkdir /tmp/$tmpDirName 3 hdfs dfs -mkdir /tmp/$tmpDirName/info

注:其中info为列簇名,若有多个列簇,就需要在表目录下创建多个子目录。

1 # cp
2 hdfs dfs -cp cosn://$bucketName/"${TIME}"_$tableName/*/info/* /tmp/$tmpDirName/info/
3 # distcp
/usr/local/service/hadoop/bin/hadoop distcp -i -update -skipcrccheck -m 50 -log
/tmp/distcp-logs -strategy dynamic -bandwidth 100
cosn://$bucketName/"${TIME}"_$tableName/*/info/* /tmp/$tmpDirName/info/

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /tmp/$tmpDirName $tableName

验证数据是否成功导入;

1 # 进入 hbase shell
2 count '$tableName'

image.png
上一篇 下一篇

猜你喜欢

热点阅读