Hello, all,

I am playing with YCSB to test HBase performance. I am using HBase 0.98.5. I 
tried to adjust the hfile.block.cache.size to see the difference, when I set 
hfile.block.cache.size to 0, read performance is very bad, but write 
performance is very very very good....; when I set hfile.block.cache.size to 
0.4, read is better, but write performance drop dramatically. I disable the 
client side writebuffer already.
This is hard to understand for me:
The HBase guide just said hfile.block.cache.size setting is about how much 
memory used as block cache used by StoreFile. I have no idea of how HBase works 
internally. Typically, it is easy to understand that increase the size of cache 
should help the read, but why it will harm the write operation? The write 
performance down from 30,000 to 4,000 for your reference, just by changing the 
hfile.block.cache.size from 0 to 0.4.
Could anyone give me a brief explanation about this observation or give me some 
advices about what to study to understand what is block cache used for?

Another question: HBase write will first write to WAL then to memstore. Will 
the write to WAL go to disk directly before hbase write memstore, a sync 
operation or it is possible that write to WAL is still buffered somewhere when 
hbase put the data into the memstore?

Reading src code may cost me months, so a kindly reply will help me a lot... ...
Thanks very much!

Best Regards,
Ming

Reply via email to