暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

快照技术在集群间数据迁移上的应用

架构与英文 2021-07-15
1413

集群之间数据迁移在大数据场景中是常有的事,快照迁移方式逐步占据了大部分江山,先抛出两个问题,snapshot快照到底是什么?使用快照迁移的好处是什么?

 

迁移数据常见场景:

1、  集群规模对等 n(A)==n(B))、挂盘个数对等、挂盘个数不对等

2、  集群规模不对等 (n(A)> n(B)n(A) < n(B),挂盘个数对等、挂盘个数不对等。

两个集群的的集群规模和挂盘个数均对等的情况下,直接集群Ascp复制数据到集群B是最快的,但这只是部分组件(ElasticSearch)支持,其它组件(HBaseHive)的迁移就很麻烦了。

Hive迁移需要HDFS数据和metastore元数据,HDFS可以通过distcp命令在两个集群复制数据,但涉及到目录权限问题,元数据可以通过sql语句导出整个库,再恢复即可。但HBase直接复制目录是不行的,因为新集群的名字、主机名、regionserverID等信息不对应,常用的方式是快照迁移。

在很多地方可以看到快照的影子:虚拟机系统快照,HDFS增量快照、HBase表快照、ES索引快照等,总之快照执行速度之快,应用之广。其原理是怎样的呢?

经过查阅资料,了解到快照是通过引用快照指针表,指向数据块,并不是数据块的复制。

为了简单理解我们从基本的COWcopy on write),和ROWRedirect on write)入手了解:

 

COWcopy on write)步骤简述:



1、  创建快照,会创建一个快照指针表和一个快照卷。快照指针表指向源数据地址,此时快照卷为空。

2、更改数据时:待更改的数据复制到快照卷,并修改指向该数据的快照指针地址。然后再更新源数据。此时涉及改动数据的复制,其它数据并不会复制。(可见其缺点是更改数据时降低系统写性能)

3、  插入数据时:快照不做任何更改,因为快照是该动作之前某一个时刻做的。

 

ROWRedirect on write)步骤简述:

1、  创建快照,会创建一个快照指针表和一个快照卷。复制原始指针表,快照指针表和原始指针表内容相同。快照卷为空。

2、  更新插入数据时:直接把数据写入快照卷,原始数据指针重定向到快照卷,快照指针保持不变。

3、  再次创建快照时:重复上述步骤,此时快照2会有快照1的信息。(可见恢复快照成本很高)。

 

以上就是基本的快照原理。

 

快照在HBASEES数据迁移上的应用。

 

场景:集群A  – 集群B

一、HBase快照迁移步骤:

a、集群A操作生成快照:

1、 使用超级用户执行hbase shell

2、对某个表进行snapshot操作:

     snapshot  ‘table_name’,’snapshot_name’

3、  查看snapshot: 

      list_snapshots

4、  迁移数据到集群B

hbaseorg.apache.hadoop.hbase.snapshot.ExportSnapshot –snapshot ‘snapshot_name’ –copy-from hdfs://cluster_A:8020/hbase_path/  

-copy-tohdfs://cluster_B:8020/hbase_path/  --mappers  10

其中hbase_pathhbase存储快照的父目录,--mappers参数是启用map的数量。

集群B操作恢复快照:

1、  使用超级用户执行hbase shell ;

2、  恢复快照:restore_snapshot ‘snapshot_name’ ;

3、  核对恢复表的总数:count ‘table_name’

 

二、ES 快照迁移步骤:

ES迁移快照需要使用第三方存储服务,常用的有hdfsnfs。下文以hdfs为例,假设当前ES已经配置好了repository-hdfs插件方式,以及kibana工具。

集群A操作:

1、    hdfs创建仓库目录/es,并改变目录属组,hdfs dfs –chown –R elasticsearch:elasticsearch  /es

2、    Kerberos环境创建快照到hdfs

curl -XPUT –negotiate –u: ‘http://ES_IP:9200/_snapshot/back_snapshot’ –H ‘Content-Type:application/json’–d ‘{“type”:”hdfs”,”settings”:{“uri”:”hdfs://activeNamenode:8020”,”path”:”/es”,”security.principal”:”superuser_principal”}}’

3、    复制到集群Bhdfs目录:

hadoop distcp –update hdfs://cluster_A:8020/es  hdfs://cluster_B:8020/es

集群B操作:

1、  更改hdfs上的快照目录权限、属组和集群A保持一致。

2、  Kibana注册存储库,关联读取hdfs上的快照目录。点击验证存储库验证关联状态

3、  界面选择指定索引快照恢复即可

 

结论:快照技术是在某一时间点对数据备份的一种技术手段。使用快照可以减少对原始数据全量备份的性能消耗。


文章转载自架构与英文,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论