Hbase学习分享
最近因为项目需要,开始接触Hbase。学习的过程中遇到了一些问题,也找到了一些方法和好的资料,通过本文总结一下,同时也与大家分享。
按照顺序,总结如下:
什么是Hbase
概况的讲,Hbase是bigtable的开源山寨版本,是建立的hdfs之上,提供高可靠性、高性能、列存储、可伸缩、实时读写的数据库系统。高存储、便于横向扩展的特性,也是我们项目选择Hbase进行存储的主要原因。
学习Hbase需要了解到Hbase的逻辑视图和物理存储。
逻辑视图:
一行(row) 对应 多个列族(family),一个family对应多个列(Column),每一个列对应一个存储单元(cell),而每一个单元格保存着一份数据的多个版本,版本之间通过时间戳(version)来做区分,不同版本的数据按照时间的倒叙排序,即最新的数据排在最前面。
物理存储:
Hbase的table在行的方向上分割为多个Hregion,Hregion增大到一定程度时,会自动分割为两个新的Hregion。不同Hregion会分布在不同的Hregion Server上面。因此HRegion是Hbase中分布式存储和负载均衡的最小单元。
不过HRegion不是存储的最小单元,下面可以细分为Store,StoreFile。
关于Hbase的更详细的内容,可以参考淘宝数据平台的博客“Hbase 介绍”,写得非常的好和全面。
如何使用Hbase
Hbase的环境搭建目前是公司DBA来弄的,还没有自己动手实践,以后有机会自己安装一次试试。这里的使用就是使用
Java Client API连接Hbase数据库,通过程序操纵数据库的增删改查。
Hbase的API设计的蛮简单的,简单功能的使用只需要掌握下面几个类就OK了,如下:
Configuration、HBaseAdmin、HTableDescriptor、HTable、HTablePool、ResultScanner、KeyValue、Scan、Get、Result
具体实例,可以参考HBase编程api介绍、H.E.'s Blog关于Hbase的系列文章,其中HBase入门篇2-Java操作HBase例子这篇文章写和详细。
Hbase的写入性能
测试了Hbase在单线程和多线程的读写性能,测试文档如附件。
关于影响Hbase性能的因素,可以参考文章:
Hbase的封装访问类
目前Hbase比较成熟的封装类不多,比较好的就是Hbase-dsl,项目地址:https://github.com/nearinfinity/hbase-dsl/wiki
常用链接:
这篇文章只是简单罗列了一些找到的关于Hbase的资料,方便自己和他人,欢迎讨论
Hbase挺强大的,还要不断的学习。
文 by 中亭
上一篇: 程序员修炼之道
下一篇: 2010年10月份总结