1简介HBase是一个分布式的、面向列的开源数据库源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是GoogleBigtable的开源实现,它利用HadoopHDFS作为其文件存储系统,利用HadoopMapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服务。2HBase的表结构HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族列簇colum
family。
RowKey
key1
colum
family1colum
family2colum
family3colum
1colum
2colum
1colum
2colum
3colum
1t4dfadst1abct3hellot2gdxdft2worldt3abct4dfadst2dfdsfat1gdxdft2dfadfasdt3hellot3dfdft2dfxxdfasdt1taobaocom
key2
key3t1dfdasddsf
如上图所示,key1key2key3是三条记录的唯一的rowkey值,colum
family1colum
family2colum
family3是三个列族,每个列族下又包括几列。比如colum
family1这个列族下包括两列,名字是colum
1和colum
2,t1abct2gdxdf是由rowkey1和colum
family1colum
1唯一确定的一个单元cell。这个cell中有两个数据,abc和gdxdf。两个值的时间戳不一样,分别是t1t2hbase会返回最新时间的值给请求者。这些名词的具体含义如下:1RowKey与
osql数据库们一样rowkey是用来检索记录的主键。访问hbasetable中的行,只有三种方式:11通过单个rowkey访问12通过rowkey的ra
ge
f13全表扫描Rowkey行键Rowkey可以是任意字符串最大长度是64KB,实际应用中长度一般为10100bytes,在hbase内部,rowkey保存为字节数组。存储时,数据按照Rowkey的字典序byteorder排序存储。设计key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。位置相关性注意:字典序对i
t排序的结果是11010011121314151617181922021…9919293949596979899。要保持整形的自然序,行键必须用0作左填充。行的一次读写是原子操作不论一次读写多少列。这个设计决策能够使用户很容易的理解程序在对同一个行进行并发更新操作时的行为。2列族colum
familyhbase表中的每个列,都归属与某个列族。列族是表的chema的一部分而列不是,必须在使用表之前定义。列名都以列族作为前缀。例如courseshistory,coursesmath都属于courses这个列族。访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。3单元CellHBase中通过row和colum
s确定的为一个存贮单元称为celr