加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

不中断业务,腾讯10P+金融数据跨机房迁移实战

发布时间:2019-03-14 17:58:07 所属栏目:业界 来源:DBAplus社群
导读:一、HBase知识介绍 考虑到来听分享的大部分都是MySQL DBA,因此这里做了个简单的HBase相关介绍,主要介绍了如下三个方面的内容: 1、HBase简介 HBase是基于google bigtable的开源实现,又称为hadoop database,具有高性能、高可用、易伸缩等特点,是一个面

Step 4:RegionServer参与parepare阶段的时候,首先会加一把全局锁,此时不允许这个表有数据写入、更新和删除,,将memstore中的数据flush到文件中,并为涉及到的所有HFile文件创建引用指针,这些指针元数据便是snapshot,并将这些元数据以及表相关信息写入到临时目录中;

Step 5:在第4步完成后,便会在/acquired_sname新建RegionServer对应的子节点,表示该RegionServer完成了prepare阶段;

Step 6:当master发现所有的涉及到的RegionServer都完成了prepare阶段的工作后,就会发起commit阶段的操作;

Step 7:在commit阶段,master会在zookeeper上创建/reached-snapshotname(简写为/reached-sname),该表涉及的RegionSever监听到事件后,就会启动commit阶段的工作,将临时目录中的snapshot的数据写入到正式的目录,操作完成后便会在/reached-sname新建该RegionServer对应的子节点;

Step 8:当master发现所有涉及到的RegionServer都完成了commit阶段的工作后,master还需要做一次汇总操作,汇总操作完成后,整个snapshot的创建就完成了。

Step 9:如果在一定时间内前面阶段有的regionserver没有完成对应的操作,则会进入abord阶段,在abord阶段,master会在zookeeper上创建/abord_snapshotname(简称/abord_sname),涉及的RegionServer会进行创建快照流程的回滚操作,即将临时文件夹的快照内容删除。

3、SanpShot实战

snapshot的使用相对还是比较简单,下面来实战一下:

创建snapshot

  1. snapshot 'tableName', 'snapshotName' 

备注:在hbase shell中执行

查看snapshot

  1. list_snapshots 
  2.  
  3. 查找以map开头的snapshot 
  4.  
  5. list_snapshots 'map.*' 

删除snapshot

  1. delete_snapshot 'snapshotName' 

迁移snapshot

  1. hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot  
  2. -snapshot snapshot_src_table  
  3. -copy-from hdfs://src-hbase-root-dir/hbase 
  4. -copy-to hdfs://dst-hbase-root-dir/hbase 
  5. -mappers 20  
  6. -bandwidth 1024 

这种方式用于将快照表迁移到另外一个集群的时候使用,使用MR进行数据的拷贝,速度很快,使用的时候记得要设置好bandwidth参数,以免由于网络打满导致的线上业务故障。

如果没有混布MR,则还需要搭建一个MR集群,并且命令行中需要再加入MR集群的相关参数。

恢复snapshot

  1. restore_snapshot ‘snapshotName’ 

备注:这种方式需要对表进行过disable才能进行restore_snapshot的操作,如果这个还在写入数据,则需要采用bulkload的方式导入。

将snapshot使用bulkload的方式导入

  1. hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles  
  2. -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024  
  3. hdfs://dst-hbase-root-dir/hbase/archive/datapath/tablename/filename tablename 

备注:这种方式需要将所有的文件进行遍历并全部通过bulkload导入,上面的只是一个文件的导入,这种方式不需要disable表。

Q & A

Q:前面讲的除了业务灰度切换的过程,从开始迁移到数据检验的自动化部分有更多分享吗?

A:除了业务灰度切换的过程,从开始迁移到数据检验其实是代码实现的一个过程,比如说我们第一步先创建快照,这样就很容易做代码实现,成功后会启用exportsnapshot的方式把快照从一个集群迁到另一个集群,把snapshot的名字传进去,直接通过传参数的方式在程序里实现。bulkload的导入也是一样的,在确定导入成功后,把原来的快照删除就可以做数据的校验、比对了。

讲师介绍

张秀云

腾讯高级DBA

网名飞鸿无痕,2007年进入职场后一路升级打怪,从网络管理员、Linux运维,到小公司DBA,再到腾讯金融DBA。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读