最近经常对自己提一些问题,然后自己通过google、读代码、测试寻求答案来解决疑惑,可能这些问题也能给其他人带来一些帮助。
quora是个不错的问答型网站,兴趣去看一下自己感兴趣的话题吧~
1)HBase中的TTL参数什么意思?
TTL == "Time To Live". You can specify how long a cell lives in hbase.
Onces its "TTL" has expired, its removed.
2)影响read性能的配置参数有哪些?
hbase-env.xml:
export HBASE_HEAPSIZE=4000
hbase-default.xml:
hfile.block.cache.size
3)HBase在写操作的时候会更新LruBlockCache吗?
从代码上看写的时候不会更新lruBlockCache!
4)如何将一个HBase CF指定为IN_MEMORY?
创建table的时候可以指定CF的属性,create 'taobao', {NAME => 'edp', IN_MEMORY => true}
5)HBase cache每次load的最小单位是block
6)如果每次load一个block到cache中,而以后不会再读取这个block,则这个block对block cache
hit ratio没有贡献啊,但是为什么block cache hit ratio有60%+呢?(这个我当初的错误理解,漏
洞还是很多的)
注意block cache hit ratio的最小计量单位应该是record,cache的最小单位才是block, 因为block
下面有很多record,后面的record借助了读第一个record带来的cache福利,所以block cache hit ratio
才会有60%+
7)如果只有一行一个cf,写入很大量的数据会不会发生region split?
- <property>
- <name>hbase.hregion.max.filesize</name>
- <value>67108864</value>
- <description>
- Maximum HStoreFile size. If any one of a column families' HStoreFiles has
- grown to exceed this value, the hosting HRegion is split in two.
- Default: 256M.
- </description>
- </property>
测试: 将参数hbase.hregion.max.filesize设置成64M以后,然后create table的时候只创建一个CF,测试的时候只往一个row + CF 下面塞入数据,数据量大概在80M左右,在web上显示的数目是107M,但是没有发生region split。这说明region split最小单位应该是row key级别,因为这里只有一个row,即使数据量已经上去了,但是还是没有发生region split.