hbase性能相关选项说明

首先我们简要说明下hbase的运行过程:
1.新数据在hdfs中生成hlog的日志文件,同时插入到内存的memtable中
2.当memtable的大小超过hbase.hregion.memstore.flush.size的时候,将会把数据刷新到hdfs中存成hfile格式
3.当hfile超过hbase.hregion.max.filesize,则会split成2个hfile文件,根据region对半拆分
4.当memtable满的时候,会将数据存成hfile跟拆分过的hfile在一个文件夹,当memtable变的文件超过hbase.hstore.compactionThreshold,则进行大的compaction操作,注意,这个操作非常耗费时间和系统资源。当compaction完之后的数据超过hbase.hregion.max.filesize则进行split.

由此可见:
hbase.hregion.max.filesize假如太小,则会影响文件打开的句柄数。太大假如到了要做split和compaction的时候,则非常耗费性能。
hbase.hregion.memstore.flush.size假如太小,则频繁进行磁盘写操作,假如太大,则一次性写入时间很长。
hbase.hstore.compactionThreshold假如太小,同时hbase.hregion.memstore.flush.size也很小,则在第一次split之后,会频繁做compaction操作,假如太大,并且hbase.hregion.max.filesize也很大,则compaction的时候很恐怖了。。。

结论则是,看你的系统是需要吞吐量和平均响应时间之间做一个选择。并且假如hbase.hregion.memstore.flush.size太大,虽然可以提高读写效率,万一hlog丢失,会造成部分数据的丢失,也是需要付出的代价。

你可能感兴趣的:(hbase)