logo头像

Always believe youself.

HBase基础

本文于2047天之前发表,文中内容可能已经过时。

HBase基础

HBase是一种构建在HDFS之上的分布式,面向列的存储系统。应用场景:需要实时写入,随机访问超大数据集。

HBase通过线性方式从上到下增加节点来进行扩展。HBase不是关系型数据库,也不支持SQL,但是他有自己的特长,这是RDBNS不能处理的:HBase巧妙地将大而稀疏的表放在商用服务器集群上。

1、概念

1、数据模型速览

  • 应用程序将数据存储在带有标签的表中。 表是由行和列组成。
  • 表的单元格是行和列坐标的交际。他们是有版本号。
  • 版本号是在单元格插入式有HBase自动分配的时间戳。
  • 表的行 有 行键,表用行键,即表的主键,对表的行进行排序。
  • 每行的列被分组,形成列族。所有的列族成员都有相同的前缀。

区域

  • HBase自动把表横向切分为不同区域,每个区域包含表所有行的一个子集。
  • 随着表的增大,表拥有的区域也在不断地增加。
  • 区域分散在HBase集群的单元,对于一个服务器,再大的表都可以由服务器集群来处理。
  • 通过管理整个区域某部分的节点来管理整个表。

锁定

  • 无论有多少列组成行级事务,行的更新都是原子的,这使锁定模型比较简单。

2、实现

  • HBase依赖于ZooKeeper且在默认情况下,他使用一个ZooKeeper实例为集群状态提供授权。
  • HBase通过Hadoop文件系统的API进行数据维护的。

运行HBase

  • HBase的内部有两个目录表:-ROOT- 和 .META. 。HBase通过这两个表来维护当前列表,状态,最新历史和集群上所有活跃区域的位置。
  • 当新的客户端连接到ZooKeeper集群时,首先必须知道-ROOT-的地址。 根据-ROOT-分析出.META.地址。 .META.区域覆盖需要查询的行, 找到后,进行确认用户空间区域及其地址。客户端即可直接与主机区域服务器交互。
  • -ROOT- 和 .META. 客户端可以缓存已知的所有地址。

3、安装 测试驱动程序

  • 创建 (名为test表,带有唯一的列族 data ) create ‘test ‘, ‘data’
  • 输出所有的表 list
  • 插入数据: put ‘tets’, ‘row1’, ‘data:1’, ‘value1’
  • 想要删除表,必须在删除它之前关闭它 disable ‘test’ 删除 drop ‘test’

4、客户端

  • Java

  • REST 和 thrift

    要运行REST 首先使用一下命令: hbase-daemon.sh start rest

    这将启动一个服务器实例,默认的端口是60050,对他进行后台处理,将所有的输出记到HBase日志目录下的日志文件。