美文网首页
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