红色 网站配色,seo最新优化技术,有哪些专做自然风景图片的网站,网站建设流程的怎样的摘要#xff1a;本文介绍了一种Hbase迁移的方法#xff0c;可以在一些特定场景下运用。背景在Hbase使用过程中#xff0c;使用的Hbase集群经常会因为某些原因需要数据迁移。大多数情况下#xff0c;可以跟用户协商用离线的方式进行迁移#xff0c;迁移离线数据的方式就比较…摘要本文介绍了一种Hbase迁移的方法可以在一些特定场景下运用。背景在Hbase使用过程中使用的Hbase集群经常会因为某些原因需要数据迁移。大多数情况下可以跟用户协商用离线的方式进行迁移迁移离线数据的方式就比较容易了将整个Hbase的data存储目录进行搬迁就行但是当集群数据量比较多的时候文件拷贝的时间很长对客户的业务影响时间也比较长往往在客户给的时间窗口无法完成本文给出一种迁移思路可以利用Hbase自身的功能对集群进行迁移减少集群业务中断时间。简介大家都知道Hbase有snapshot快照的功能利用快照可以记录某个时间点表的数据将其保存快照在需要的时候可以将表数据恢复到打快照时间时的样子。我们利用Hbase的snapshot可以导出某个时间点的全量数据。因为用户的业务还在不停的写入表中除了迁移快照时间点之前的全量数据我们还需要将快照时间点后源源不断的增量数据也迁移走这里如果能采用双写的方式将数据写入两个集群就好了但是用户的业务不会这样做如果这样做还得保证双写的事务一致性。于是可以利用Hbase的replication功能replication功能本身就是保留了源集群的WAL日志记录去回放写入到目的集群这样一来用户业务端-原始集群-目的集群便是个串形的数据流且由Hbase来保证数据的正确性。所以这个迁移的方法就是利用snapshot迁移全量数据利用replication迁移增量数据。迁移步骤上图给出了迁移的整个时间线流程主要有这么5个时间点。T0 配置好老集群A集群到新集群B的Replication关系Replication的数据由A集群同步到集群B将表设置成同步从此刻开始新写入A集群表的数据会保留在WAL日志中T1 生成该时间点的全量数据通过创建快照以及导出快照数据的方式将该时间点的数据导出到新集群BT2 新集群B将T1时刻的快照数据导入此时新集群B中会由快照创建出表此时老集群A集群上设置的Replication的关系会自动开始将T0时刻保留的WAL日志回放至新集群B的表中开始增量数据同步。T3 由于从T0-T3之间的操作会花费一段时间此时会积累很多WAL日志文件需要一定的时间来同步至新集群这里需要去监控一下数据同步情况等老集群WAL被逐渐消费完此时可以将老集群的写业务停止一下并准备将读写业务全部切到新集群B。T4 T3-T4之间应该是个很短的时间整个迁移也只有这个时间点会有一定中断此时是让用户将业务完全切到新集群B至此迁移完成。操作涉及的命令1.设置集群A和集群B的peer关系在源集群Hbase shell中, 设定peeradd_peer peer_name,ClusterB:2181:/Hbase2.在集群A的表中设置replication属性假设目标表名为Student先获取Familyf进入Hbase shell中alter Student,{NAME f,REPLICATION_SCOPE 1}3.给集群A的表创建快照在Hbase shell中snapshot Student,Student_table_snapshot4.在A集群中导出快照Hbase org.apache.hadoop.Hbase.snapshot.ExportSnapshot -snapshot Student_table_snapshot -copy-to /snapshot-backup/Student5.将快照数据放置到集群B的对应的目录下上面命令会导出2个目录一个是快照元数据一个是原始数据将元数据放到/Hbase/.Hbase-snapshot中将原始数据放到/Hbase/archive目录中由于Hbase的archive目录会有个定时清理这里可以提前将集群B的master的Hbase.master.cleaner.interval值设置大点避免拷贝过程中发生碰巧发生了数据清理。如果集群B中没有对应的目录可以提前创建hdfs dfs -mkdir -p /Hbase/.Hbase-snapshothdfs dfs -mkdir -p /Hbase/archive/data/default/移动导出的snapshot文件到snapshot目录hdfs dfs -mv /snapshot-backup/Student/.Hbase-snapshot/Student_table_snapshot /Hbase/.Hbase-snapshot/hdfs dfs -mv /snapshot-backup/Student/archive/data/default/Student /Hbase/archive/data/default/6.在新集群B中恢复表的快照进入Hbase shellrestore_snapshot Student_table_snapshot恢复完成后记得将集群B的hmaster中Hbase.master.cleaner.interval的值调整回来。参考文档