关于预分区:
http://www.csdn123.com/html/topnews201408/3/2603.htm 建议看看
1. 1.设置合理的memstore大小
数据写入到WAL和memstore中。
memstore中的数据flush到HDFS中。
数据存放在内存中,一般存放在jvm中的新生代、老生代区域。
memstore一般设置大小为128MB。
设置合理的memstore的值,可以提高数据装载到HBase中的速度。
2.对列簇启用压缩
比如GZIP、LZO、Zippy、Snappy 看下面表 默认下COMPRESSION => 'NONE' 都是非压缩方式
压缩的好处就是 在 hbase ----> hdfs IO操作时候 速度回更快
hbase(main):007:0> describe 'stu'
Table stu is ENABLED
COLUMN FAMILIES DESCRIPTION
{NAME => 'base', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATIO
N_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL
=> 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY =>
'false', BLOCKCACHE => 'true'}
{NAME => 'more', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATIO
N_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL
=> 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY =>
'false', BLOCKCACHE => 'true'}
3.对region进行预拆分 一定程度实现负载均衡
在hbase执行如下命令,创建表aaa 列簇 cf 使用 HexStringSplitter 方式切分region,切分为10分region
这样数据在入到hbase的时候,就会均衡存储
bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -c 10 aaa -f cf HexStringSplitter
4.当数据进行匀速的批量装载的时候,当region达到指定的阈值时,就会进行分裂,形成分裂风暴。
在分裂风暴下是不能对外提供访问服务,因此需要人工手工分裂。