HBase 如何减少升级时重启rs节点造成的影响
最近被问到这个问题,一时没有很好的回答,事后仔细思考了下,整理如下。 rs节点重启对于应用的影响可分为如下2个阶段: region不可用 region读取慢 不可用的优化 从rs停止到各个region重新上线前都处于不可用阶段,其中包含了master感知到有rs退出,进而调度执行scp的过程,详细的过程可以参考我的另外一篇文章《HBase2.0 regionServer退出处理流程》,尤其是末尾链接中的详细流程图; 而不可用阶段最为耗时的部分应该是scp的执行阶段,其核心部分伪代码如下: if(carryingMeta) { split meta log; assign meta region; wait meta loaded; } split log; assign reigons; 因此减少不可用的时间主要就是简化上述过程,可用的手段有如下2个: 重启rs前先执行flush,从而减少split log以及后续replay log所需的时间; 重启rs前先把region move到其它节点去,这个方法需要获取region信息并且要自己指定目标节点,稍微麻烦一些,但是效果更彻底,因为...