1.hbase的特点
(1)随机读写操作
(2)大数据上高并发操作,例如每秒PB级数据的数千次的读写操作
(3)读写均是非常简单的操作,例如没有join操作
2.hbase设计推荐方法
(1)更宽的row,更有利于搜索操作。
就是说每一行多存储一些数据,如果以前设计的是一行存储5KB,那么可以改为一行存储30KB,或者更多。当然,column family和column会更多一些。
(2)使写操作是幂等的和独立的
如果以前的hbase设计是,在随意的时间点就可以插入一行新的数据,那么现在可以改为每10分钟或者1小时为界限,插入一行新的数据。
(3)为每一个KeyValue存储更多的数据
其实方法(3)跟方法(1)是一个意思,只是方法(3)是从存储空间利用率的角度看问题,而方法(1)是从搜索效率的角度看问题的。在hbase实际的存储中,key会跟每个value组成key-value进行存储,而不是通常认为的是key-value1-value2进行存储的。所以key要尽可能的简洁,value需要多存储一些数据。
(4)缩短column family和column的名字长度
3.hbase设计不推荐的方法
(1)不推荐使用HTable/HTablePool
因为在高并发的情况下,HTable和HTablePool的效率比较低。推荐使用asynchbase+Netty替代HTable和HTablePool。asynchbase是一个全异步、非阻塞、线程安全、高性能的HBase客户端,github地址 https://github.com/StumbleUponArchive/asynchbase。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序,官方网址 http://netty.io/。
(2)不推荐使用变长的key
key一般包含一些复合信息,如机器的ID号+时间戳等。保持key的长度在hbase中是固定的,因为变长的key会造成hbase扫描困难。
(3)避免在RegionServer中存在过多的Region
可以通过hbase中hbase.regionserver.regionSplitLimit设置,控制Region数量,一个RegionServer中最好不要出现上千个Region。可以参考 http://itindex.net/detail/49632-hbase-%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98,其中介绍了许多其他的hbase性能调优设置。
(1)随机读写操作
(2)大数据上高并发操作,例如每秒PB级数据的数千次的读写操作
(3)读写均是非常简单的操作,例如没有join操作
2.hbase设计推荐方法
(1)更宽的row,更有利于搜索操作。
就是说每一行多存储一些数据,如果以前设计的是一行存储5KB,那么可以改为一行存储30KB,或者更多。当然,column family和column会更多一些。
(2)使写操作是幂等的和独立的
如果以前的hbase设计是,在随意的时间点就可以插入一行新的数据,那么现在可以改为每10分钟或者1小时为界限,插入一行新的数据。
(3)为每一个KeyValue存储更多的数据
其实方法(3)跟方法(1)是一个意思,只是方法(3)是从存储空间利用率的角度看问题,而方法(1)是从搜索效率的角度看问题的。在hbase实际的存储中,key会跟每个value组成key-value进行存储,而不是通常认为的是key-value1-value2进行存储的。所以key要尽可能的简洁,value需要多存储一些数据。
(4)缩短column family和column的名字长度
3.hbase设计不推荐的方法
(1)不推荐使用HTable/HTablePool
因为在高并发的情况下,HTable和HTablePool的效率比较低。推荐使用asynchbase+Netty替代HTable和HTablePool。asynchbase是一个全异步、非阻塞、线程安全、高性能的HBase客户端,github地址 https://github.com/StumbleUponArchive/asynchbase。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序,官方网址 http://netty.io/。
(2)不推荐使用变长的key
key一般包含一些复合信息,如机器的ID号+时间戳等。保持key的长度在hbase中是固定的,因为变长的key会造成hbase扫描困难。
(3)避免在RegionServer中存在过多的Region
可以通过hbase中hbase.regionserver.regionSplitLimit设置,控制Region数量,一个RegionServer中最好不要出现上千个Region。可以参考 http://itindex.net/detail/49632-hbase-%E6%80%A7%E8%83%BD%E8%B0%83%E4%BC%98,其中介绍了许多其他的hbase性能调优设置。