hbase,Hbase入库因素小结(不断更新)

一、硬件因素

Ø 内存
Hbase对内存有特别的嗜好,因为内存越大,regionserver接受客户端传递来的数据时可以在内存中做缓存(memstore)以及排序,分配给region等操作的限度更大,相当于利用内存作为缓冲池,组织好hbase需要的数据之后再统一写的顺序写硬盘。
Ø CPU
CPU参与边界计算以及数据排序等操作,当内存非常大时,CPU对内存中数据的组织,排序,边界计算等可能成为瓶颈。
Ø 网络I/O
以目前的集群状况来看(10节点小集群),网络I/O没有达到瓶颈,不过当集群规模扩大之后是否会成为瓶颈待考虑。
Ø 硬盘
硬盘性能的提升对hbase入库的影响不大,淘宝集群最大的入库效率在50MB/s左右,尚未达到单硬盘的写入速度极限。

二、Hbase配置参数

Ø hbase.hregion.max.filesize
这个参数是单个region的最大字节数,当region中的数据达到这个值之后就会平均分裂成2个region
Ø hbase.hregion.memstore.flush.size
这个参数是每次内存能缓存的数据最大字节数,当memstore中缓存的数据达到这个值,hbase就将数据flush到硬盘上
Ø hbase.regionserver.handler.count
这个参数决定了每个regionserver能够开启的最大handler数量,即接受客户端请求的句柄数,这个数量越大能接受的客户端以及线程数越多
Ø HBASE_HEAPSIZE
这个参数决定了hbase最多能调用物理机的内存大小,尽量配置大一些
hbase.hregion.max.filesize和hbase.hregion.memstore.flush.size参数的配置有讲究,目前的配置是前一个参数为64MB,后一个参数为128MB

三、系统架构因素

Ø Client端
入库时对client的数量和开启的线程数量有要求,对client机器性能也有一定的要求,因为实际测试的时候发现client端开启50个进程后机器性能占用比较满。
Ø Regionserver端
Regionserver端越多,能同时接受的请求就越多,入库速度就越快。

四、配套软件

操作系统:64位centOS
JDK:sun 64位jdk
Hadoop:0.20.2版
Hbase:0.89版

五、入库程序设计因素

入库程序的设计上需要在创建Htable的时候就设置好region的数量,start_key和end_key,这样就能够使程序开始运行的时候向每个regionserver传递请求。另外start_key和end_key的设计可以让数据较紧凑的平均分发到各个region上。
入库程序不要手动做table.flushcommit(),而是使用hbase自带的memstore->硬盘的写入机制,只需要table.put即可。然后设置table的自动提交功能为false(如果为true的话每次调用table.put的时候都会触发一次操作)。
入库程序设计要开尽可能多的线程,在多个机器上运行,同时读取本地文件,在并发数量大的情况下入库效率会得到较大提升。

六、当前的测试情况

目前集群含有8个节点,主节点内存为32G,regionserver节点内存为8G,设置的region分裂sizewie64MB,memstore的flushsize为128MB。3个client同时入库速度达到每秒10w次请求。总体速度达到2MB/s。
Tags:  hbase应用 hbase下载 hbase性能 hbase安装 hbase

延伸阅读

最新评论

发表评论