1 Namenode Full GC导致进程异常退出BUG
NameNode瞬时高并发导致短暂不可用
NameNode full GC导致集群异常退出bug
NameNode写元数据到journalnode超时会导致Namenode进程异常退出
源码处理方式
journalnode传输后20s没有收到超过半数节点响应,代表数据传输失败,程序会自动停止active namenode进程
但是当发生full GC超过30秒则会发生异常退出,很多平时超时则停止的程序都会存在full GC导致异常退出问题
journalnode集群数量为奇数,当超过一半数量20s内响应存活则集群为健康状态。如上图只要超过一半网络正常都直接return,后面重试即可
2 分段加锁和双缓冲方案BUG/瞬时高并发短暂不可用
因为是分段加锁,当SyncBuffer内存写磁盘时会释放锁,所以CurrentBuffer可以继续写入数据。
如果SyncBuffer还没有完成磁盘写(当SyncBuffer内存满512kb则刷写磁盘),但CurrentBuffer内存已满,
此时CurrentBuffer会线程wait等待导致NameNode短暂不可用
解决:可以将两个内存由512kb调大