笔者的HBase最近出了点问题,当执行bulk load以后,再执行Get操作,会导致RegionServer陷入一个死循环中,跳不出来.进一步导致RegionServer负载过高,以及此HStore接下来的bulk load以及Compaction操作都会被卡住.因为它们都会请求同一个锁.
而死循环的部分,刚好就是读HFile的部分,所以笔者研究了一下HFile的格式.而看官方文档的时候,有的地方写的不明确,故找了一些其他的blog来看.刚好发现了一篇写的很不错的blog,不仅让我对文档中以及源码中的一些不理解的点理解了,而且对其它的方面有了更深刻的认识.故转载一下.
但是,看这篇文章以前,若你没有读过源码,或者至少看官方文档,那你,你会对这篇文章的内容不知所云.所以,建议读这篇文章以前,至少先读一下HBase中的部分代码,读一下HBase branch-1 中的TestHFileWriterV2
这部分代码.配合这两篇文档:Appendix E. HFile format version 2和Apache HBase I/O – HFile.
由于原文太长,copy不易,故请点击查看原文.