上个周末线上突然2台Datanode Server挂掉(panic原因调查中),后来机房人员重启后一个DN一直在pending住没有注册成功,日志卡在初始化没有任何输出,发现原来是一个DN线程阻塞住了另一个DN,细究如下:
线上NN启用了HA模式,因此DN在启动时会启动2个BPServiceActor线程对2个NN进行注册,其会调用BPOfferService的verifyAndSetNamespaceInfo方法,而这个方法是同步方法(以防止NPE),因此当一个BPServiceActor进行注册时(FSDataSet初始化,这个过程可能会比较慢),另一个线程会被Block住,这时DN的日志可能什么都没有输出,稍等会儿就OK了.
本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1323553,如需转载请自行联系原作者