Hbase学习资料

HBase数据模型解析和基本的表设计分析

Hbase原理、基本概念、基本架构

HBase 超详细介绍

Apache HBase ™ 官方文档英文

HBase官方文档中文版-0.97

数据模型

  • Table:表,包含多行数据。eg: user 用户表
  • Row:行,由一个row key和多个列组成。
  • Column:列,由列族或列限定符组成
  • Column Family:列族,一个列族包含多个列限定符及列限定符对应的值。eg : home、company。用户有home和company两类信息,其中home、company就是列族。该值是在创建表时确定后期不能变。
  • Column Qualifier:列限定符,属于某一个列族,列限定符中可以存放多个单元。eg:key:value,列限定符就是key,value就是列限定符代表的一个单元。home:address=jiangsu。其中address属于home列族下一个列标识,jiangsu是对应的单元(jiangsu这个值有个时间版本号:时间戳)。列标识和单元,在表创建完成后动态添加、删除,添加只需添加值,值的时间戳会自动添加。
  • Cell:单元,一个列标识中的值和值对应的时间戳称作单元,使用时间戳来表示值的版本。eg:home:address:{2017080411:jiangsu,2017080412:shanghai},其中017080411:jiangsu就是一个单元,一个列标识默认保存3个单元,查询时默认返回最新的值。
  • Timestamp:时间戳,值在添加时会自动添加时间戳表示值得版本。也可以指定一个不同的时间戳值。

《Hbase学习资料》 webtable表

  • webtable表有contents、anchor、people三个列族。
  • row key为com.cnn.www的一行数据中,contents列族下有html列标识,且有5个不同时间戳的值,值为空的单元不会占用存储空间。
  • webtable的json数据表示如下
{
  "com.cnn.www": {
    contents: {
      t6: contents:html: "<html>..."
      t5: contents:html: "<html>..."
      t3: contents:html: "<html>..."
    }
    anchor: {
      t9: anchor:cnnsi.com = "CNN"
      t8: anchor:my.look.ca = "CNN.com"
    }
    people: {}
  }
  "com.example.www": {
    contents: {
      t5: contents:html: "<html>..."
    }
    anchor: {}
    people: {
      t5: people:author: "John Doe"
    }
  }
}

常规

  • 部署模式有standalone和Distributed。生产选择fully-distributed
    • Distributed有pseudo-distributed 和 fully-distributed
  • standalone模式下,zookeeper和Hmaster、HregionServer都运行在一个JVM中。
  • pseudo-distributed(伪分布式):运行在一台机器上,但是zookeeper和Hmaster、HregionServer运行在单独的jvm中。
  • fully-distributed:集群中有多个集群上运行zookeeper、Hmaster、HregionServer。
  • 客户端有shell和Java API
  • 修改配置文件需要重启,但是有一些配置参数支持动态配置
  • hbase存储数据可以选择存储在本地或者hdfs。生产中选择hdfs。
  • Hbase通过zookeeper来管理Hmaster,通过选举来保证集群中有一个Hmaster。
  • 因为Hmaster有可能会变化(如果Hmaster挂了就会选举产生新的的Hmaster),所以客户端是直接和zookeeper来进行通信,然后获取到Hmaster
    原文作者:zlcook
    原文地址: https://www.jianshu.com/p/0eca51f8c60f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞