先说故障现象:
某天收到RM主备切换报警,正常切换并不会有什么影响,但我当时还是出于警觉想去服务器上check下为什么切,check的时候发现集群无法提交任务,所以的任务都被挂起了。
第一反应是原standby节点有问题,于是手动又触发了一次切换,但任务依然无法运行。主备RM都重启过了但问题依然无法解决,那只能使用终极杀手锏了,重启了整个yarn集群。
集群重启之后任务恢复了,心里舒了一口气,去查RM的log吧,看下是什么原因导致了这次故障,log还没有细看,只看到一些KeeperErrorCode = ConnectionLoss
,此时悲剧发生了,又收到了RM切换的报警,任务又被挂起了。。。
毫无头绪,只能再次重启集群,这次重点关注了下集群上运行任务,估计是哪个任务把集群给干瘫了,观察到有个任务运行失败的时候集群就会被瘫,看了下该任务的报错信息特别特别的长,于是告诉任务的负责人暂时把任务停掉,观察下集群是不是因为这个任务导致的。
该任务停掉之后集群正常运行了一段时间,在这段时间内在查RM的log并没有发现太多有价值的东西,全是与zk的连接丢失,连接丢失确实是会触发主备切换,但关键是为什么连接会丢失呢?没有头绪,只好去zk server端看下log,发现报2018-11-27 15:54:30,208 [myid:1] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@373] - Exception causing close of session 0x36753e378030000 due to java.io.IOException: Len error 8603591