这个文档置顶很久了,还是写点东西吧。
HBase这个东西的入库速度说实在的,在多列族的情况下表现很一般,实在是不值得提。
具体的原因是由于多列族在hbase的写入机制决定的,有兴趣的可以在网上找找资料,这里我只说单列族的情况下的我的测试结果:
集群的规模为9(S)+1(M)+3(C)
16G内存
8核CPU
千兆网络
8块7200转的SATA硬盘
不做raid
Client方式写入:
单个Slave的写入速度约为8.3MB/s
整个集群的写入速度约为83MB/s
BulkLoad模式写入:
整个集群(不算Client,就是9+1)的写入速度(包含了创建HFile时间)约为160MB/s
这里需要说明一下:
1、我在写入的时候有很高的硬盘I/O Wait,最高达到了300ms(一般在12ms-15ms之间是正常的),这个和我当前使用的硬件有直接关系(没有更好的,只能这样了)。
2、关于BulkLoad在增量写表的过程中,性能表现及其难看,不建议采用。只是适合空表情况下数据导入。
3、对于Client的写入模式,如果做了Secondary Index,很遗憾,写入的速度也会下降,一般来说如果增加3个索引,整个集群的写入速度会下降到40MB/s。
4、如何提升速度?一般来说除了解决第一条硬盘I/O Wait的问题外,可通过提升单机内存以及增加单机硬盘数量。这里我还未做过测试。当然,增加Slave也是可以的。
5、最后需要注意一下,在设定Region块的边界的时候尽量符合数据的实际情况,做到均匀的散列,这样可以保证数据写入时所有Slave的所有硬盘都在转。
6、还是那句话,希望有过相关测试的朋友能够指出我当前不足,提供更高的提升方式,欢迎邮件联系dajuezhao@gmail.com