文章目录
前言
前面文章笔者介绍了比较多关于HDFS RBF如何来解决多集群协调管理的问题,RBF里的Router服务在里面扮演着一个很重要的角色。它能让众多的NN对于client来说完全透明,鉴于这一点,我们可以很好地依托Router服务来做到数据的无感迁移,从而间接达到平衡各个namespace RPC load的效果。本文笔者将要阐述的是我们如何在RBF模式下做到数据的无感迁移。
数据无感迁移的挑战
关于大体量数据的迁移,笔者在前年做过一次PB级规模的数据迁移实践(HDFS千万级别文件数/PB规模量级的数据迁移实战总结),不过这次随着集群数据规模的进一步扩张,需要迁移的数据体量也更加庞大。倘若同样沿用之前的做法的话,对于用户停服的时间影响(数小时的服务影响时间)是无法接受的。因此在这次的数据迁移任务中,对于迁移过程的“无感”要求是最高的,如何做到对于用户接近无感的数据迁移,这是我们最大的一个目标,数据迁移的体量还是控制在PB级别。
数据无感迁移实践
在明确完数据迁移的要求之后,我们在调研实践一种新的无感迁移的方案,最终我们采用了社区Federation balance tool(HDFS-15294)的工具方案。这个工具底层依赖的同样是Hadoop自带的DistCp方案。另外,这个工具方案也能很好的支持RBF模式。
我们采用此方案的一个最大的原因是它实现了我们之前考虑过的一种基于初始拷贝+多循环增量拷贝的数据迁移方案。采用这种方式对于用户的影响时间会降低到一个很小的可以接受的时间值,因为用户只会在最后一次增量数据的拷贝过程里才会受到影响(不能读写目标数据)。Fed balance tool的增量拷贝基于的原理是利用了DistCp现有的支持snapshot diff的增量拷贝功能来做的。
虽然Fed balance tool在实现上已经做到将数据迁移的影响做到最小,但是我们在实际的迁移过程里还是踩了不少的