• hbase1向hbase2表迁移


    hbase1版本向hbase2版本表数据迁移;

    #这里使用hbase的 Snapshot功能实现

    1、源集群 flush刷新内存数据到磁盘
    hbase> flush '7d8f7d560e9ef7d355bff43a60b0d226'
    7d8f7d560e9ef7d355bff43a60b0d226 来自于校验和,可以在hbase控制台中查看。注意,如果有多个region那么需要对每个region都执行,类似于图中:

      

      并且,如果条件允许,尽可能disable表;

    2、源集群 ,创建表快照

    hbase> snapshot  '表名', '快照名'      #创建命令

    查看快照命令:list_snapshots
    删除快照命令:delete_snapshot

    我这里是已经disable表了

     将快照目录和表目录导出到主机本地:

    3、传输数据到目标集群

    这里采取通过手动方式(distcp,scp,hdfs dfs -cp)直接把源hbase目录下的快照目录和数据目录拷贝到目标集群;

    集群间通的话,也可以使用MR任务去传输; 

    把源集群的快照目录和表目录scp到目标集群的主机上:

    scp -r app_precision_marketing.label_precision_marketing_user_internal_little root@172.xx.xx.xx:/tmp/

    scp -r snapshot_app_precision_marketing.label_precision_marketing_user_internal_little root@172.xx.xx.xx:/tmp/

    4、[目标集群] 把从源集群传过来的快照目录和表目录上传到hbase的数据目录中

    保证目标集群中没有这张表,如果有的话,并且不用的话,可以删除,参考:hbase2强制删除表 - 秋刀鱼的滋味w - 博客园 (cnblogs.com)

    如果目标集群中已经存在这张表,是不能迁移的;

     

    看一下HDFS上的目录权限是否正确,不正确的话需要更改权限;

    5、目标集群

    使用clone_snapshot 'snapshot_name, 'tableName' 修复元数据

    可见表已经出现了,并且可以查询了:

  • 相关阅读:
    android有点纠结的小问题
    持久化应用程序实例的状态
    preference activity框架
    RISC与CISC比较
    C++ const用法
    虚析构函数
    best-case analysis in real-time system
    jitter
    C/C++中static,const,inline三种关键字详细总结
    #pragma warning(disable 4786)
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/15726181.html
Copyright © 2020-2023  润新知