美文网首页
hbase数据归档cos及cos导入hbase方案 - EMR

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

作者: 彩色的炮灰 | 来源:发表于2022-11-17 16:00 被阅读0次

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

image.png image.png
  • 在腾讯云对象存储官网创建存储桶,注意地域选择hbase集群所在地地域,这样传输距离短,归档比较快;
  • 查看当前集群是否授权cos存储;
image.png

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

  • 确认cos可以访问;

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

  • 对hbase表数据授权 snapshot 操作;

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

  • 为目录做 snapshot;

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

  • 在快照目录下面的.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

  • 删除snapshot

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为列簇名,若有多个列簇,就需要在表目录下创建多个子目录。

  • 将 cos 中的 hfile 文件拷贝回 hdfs 集群;
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/
  • 执行 bulkload,将数据导入 hbase;

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

验证数据是否成功导入;

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

image.png

相关文章

网友评论

      本文标题:hbase数据归档cos及cos导入hbase方案 - EMR

      本文链接:https://www.haomeiwen.com/subject/fpwyxdtx.html