【大数据】HBase

HBase

  • 基本概念
    • 基本元素
    • 表 Table

基本概念

基本元素

  • Row key(行键):对应为关系型数据库中的主键,唯一,可以是任意的字符串,最大长度为64K,在内部存储中会被存储为字节数组。如示例1中"com.cnn.www"为Row Key。HBase表中的数据是按照Row Key字符串的字典序排列的;利用此特性,将一下经常读取的行存储到一起或者靠近,减少Scan耗时,提高读取的效率。
  • Column Family(列族):表Schema的一部分,HBase表中的每个列都归属于某个列族,即列族是由一系列的列组成的,必须在创建表的时候就指定好。如示例1中,contents和anchor为两个列族,分别包含了不同的列。列族不是越多越好,过多的列族会导致io增多及分裂时数据不均匀,官方推荐列族数量为1~3个。列族不仅能帮助开发者构建数据的语义边界,还能有助于开发者设置某些特性,例如可以指定某个列族内的数据压缩形式。访问控制、磁盘和内存怒的使用统计都是在列族层面进行的。
  • Column(列):只能从属于一个列族。列的数量一般没有强限制,一个列族中可以有数百万列,且这些列都可以动态添加。如示例1中,anchor:cssnsi.com, anchor:my.look.ca和contents:html,分别为anchor和contents列族的列。
  • Version Number(版本号):HBase中每一列的值或者说每个单元格的值都是具有版本号的,默认使用系统当前时间戳,如示例1中Time stamp,也可以用户显式地设置。一个单元格的不同版本号按照降序排列,访问的时候优先读取最新的值,这种优化的目的在于让新值比旧值更容易被读取。用户可以指定每个值所能保存的最大版本数。
  • Cell(单元格):一个单元格就是由RowKey、Column Family:Column、Version Number唯一确定的,Cell中的数据是没有类型的,全部都是字节码。

表 Table

  1. 概念模型
    示例1:表webtable
    有一个名为webtable的表,包含两个列族:contents和anchor.在这个例子里面,anchor有两个列 (anchor:cssnsi.com, anchor:my.look.ca),contents仅有一列(contents:html)
Row key Time stamp ColumnFamily contents ColumnFamily anchor
“com.cnn.www” t9 anchor:cnnsi.com = “CNN”
“com.cnn.www” t8 anchor:my.look.ca = “CNN.com”
“com.cnn.www” t6 contents:html = “…”
“com.cnn.www” t5 contents:html = “…”
“com.cnn.www” t3 contents:html = “…”
  1. 物理模型
    在概念模型中,整个表综观上表现为一个稀疏的矩阵,但是在实际的物理存储中,整个表是区分列簇存储的。
Row Key Time stamp Column Family anchor
“com.cnn.www” t9 anchor:cnnsi.com = “CNN”
“com.cnn.www” t8 anchor:my.look.ca = “CNN.com”
Row Key Time stamp Column Family contents
“com.cnn.www” t6 contents:html = “…”
“com.cnn.www” t5 contents:html = “…”
“com.cnn.www” t3 contents:html = “…”

在物理模型中,又有Region Server、Region、Store等概念。

  1. Store:每个列族保存在一个store中,每个store又包含一个MemStore和多个StoreFile;当MemStore达到一定容量时,会持久化到StoreFile中。
  2. Region:HBase中扩展和负载均衡的基本单位,一个Region包含多个store。当Region达到一定容量上限是,会分裂成多个Region。
  3. Region Server:维护Region并处理对Region的IO请求、切分在运行过程中变得过大的Region。

【大数据】HBase_第1张图片

参考链接:最近学习了HBase

你可能感兴趣的:(大数据,hbase)