首先我们要明确一件事情,Hlog是存储在hdfs上的。并且一台HRegionServer就有一个hlog所一一对应。那么谈到Hbase的Hlog,我们不得不说一下hbase的写流程。
HBase往kakfa写数据的时候,首先获取到HBaseClient,然后链接到Zookeeper 获取到root表,从root表中定位meta表的位置,然后从RegionServer中定位到Region的信息,然后region写数据之前会先检查memstore里面的 boomfilter。
如果此Region的MemStore已经有缓存已有写入的数据,则直接返回,如果没有缓存,写入HLog(WAL)再写入MemStore成功后在返回。MemStore的内存达到一定值的时候会调用flush成为storefile然后存储到hdfs。
在堆HBase插入数据时,插入到内存MemStore所以很快,对于安全性不高的英勇可以关闭HLog,可以获得更高的写性能。