前言
前面时间笔者曾写过一篇关于利用HDFS fastcopy功能来加速DistCp数据拷贝效率的文章(Distcp结合HDFS Fastcopy的性能改造提升),以及提到了现有DistCp在数据切分时候的一些问题(聊聊Hadoop DistCp的数据切分处理方式),会导致长尾任务的出现等等。其实在后续的测试过程中,我们还发现并解决了许多大大小小的坑,使得我们整体数据拷贝的耗时达到一个相对短的小时。本文笔者来简单总结下这期间我们踩过的坑,以及我们最后是如何将1000w级别文件数量,10PB规模size的数据,在预估2小时内的时间就能全部迁移完成。
HDFS元数据快速膨胀带来的性能瓶颈问题
首先交代一下本文所述的数据迁移实战经历的一个背景是因为我司内部HDFS集群因为业务上的调整导致数据量出现了快速激增的情况。通过每日的RPC总量统计结果,整个集群的RPC处理量比之前翻了2,3倍之多。简单来说,就是我们集群承受了前所未有的RPC压力,这也让我们的HDFS经常处于一个busy的状态,关键SLA任务时不时会因为HDFS慢的问题导致延时的问题。
上面的问题已经不是通过打个简单patch就能立马解决的问题,基于这个背景,于是我们决定采用新加HDFS Federation的方式,将部分业务数据整体迁移到另一个新的namespace下,即我们新加入的一对NN中。