前言
从去年下半年开始,组内就开始着手准备升级公司内部的Hadoop集群,由于老版本实在已经落后社区很多了,也陆续碰到很多社区上已经被fix的bug。所以决定做一个大胆的举动:升级公司内部大集群版本。像这种比较aggressive的做法,很多人不是一开始能够接受,它存在不可控的风险。但所幸,在今年暑假,我们成功将内部版本升到了最近比较新的Hadoop版本。本文是对此过程的经验教训,相信会给很多想要做Hadoop Rolling Upgrade的同学有所帮助。
Rolling Upgrade兼容性测试
我们此次升级采用的不是停服务的方式,而是Rolling Upgrade的方式,也算是对我们团队的一个考验吧。所以在这里面,要做大量的兼容性测试。因为rolling的过程中,会存在新老版本(NN,DN,RM和NN)共存的情况。再加上同时在跑的YARN,情况组合起来还是挺多的。不过,测试下来,除了HDFS新版本特性异构存储(StorageType)出现明显不兼容错误,其它都正常。
升级后的性能不稳定问题
其实前期兼容性测试做的足够完善的情况下时,整个Rolling Upgrade的过程问题不大。按照官方文档的建议,从NN开始升级,然后DN一点点的rolling替换即可,用户应用对此无感知。
但是后面我们怎么也没料到,在新的升级后的版本运行过程中,出现了严重的性能不稳定问题,主要表现为RPC周期性变慢,到最慢的时候,延时已经达