hadoop学习记录(三)HBase基本概念

这一次开始学习HBase数据库。

我用的是VMWare + ubuntu16.04 +Hbase1.1.5 +hadoop2.6.0的组合。

经过亲自安装验证,版本间没有发生冲突,可以进行学习和开发。

具体的安装过程参照了厦门大学数据实验室的安装教程,个人感觉这里面的安装步骤非常详细,非常少适合新人上手,只要懂得基本的java和linux基础即可。

下面是厦大数据实验室的链接:http://dblab.xmu.edu.cn/blog/588-2/#more-588

Hbase即hadoop database,这是一个在HFDS上的分布式数据库。与传统关系型数据库的行数据存储不同,Hbase则是以列的形式存储数据。

Hbase中RowKey是类似于传统关系型数据库中的主键,然后字段都会被存在colFamily(列族)中,然后列族中可以有不同的col(列名),colFamily:col唯一确定了一个值,插入数据的时候要定位到表明=>行键=>列族:列名,且一次只能插入一个数据。

例如现在有一个学生表,学生表里有姓名,性别,学号,成绩字段,那么HBase的表结构将会是下面这样:

RowKey行键 info:name info:sex info:number grade:math grade:english
student1 kinsomy        
student1   male      
student1     123456    
student1       100  
student1         100

 

每次插入一条数据,表中就形成了一个完整的记录,这就是列式数据库的基本结构。

同时每次插入一行的时候,HBase会自动附带一个时间戳timestamp来表示版本。

在定义表的时候,一个表的列族必须作为表模式定义的一部分预先给出。新的列族成员可以随后按需要加入。

例如在定义表的时候,info和grade要先随表定义好,然后可以在需要的时候加入name,math等列族中的成员。

Hbase数据库适合用在数据需要多次写入并且多次查询的场景中,并且查询条件不是很复杂的情况。

由于我才用的是伪分布式的配置,目前只采用了单个节点,因此没有master和salve之说。

HBase内部保留了名为-ROOT-和.META.的特殊目录表,他们维护者当前集群上所有区域的列表、状态和位置。—ROOT—表包含.META.表的区域列表。.META.表包含所有用户空间区域的列表,表中的项使用区域名作为键。区域名由所属的表名,区域的起始行、区域的创建时间以及对其整体进行的MD5哈希值组成。

千万记住的是,如果想要删除一个table,首先要先把该table disable掉,然后再执行删除指令。删除一个表的指令为 drop  ‘tablename’。

要想查看一个表是否被disable可以在hbase shell下使用指令  is_disabled 'tablename'

 

该系列博文仅作为个人学习笔记。

posted @ 2016-06-11 15:27  kinsomy  阅读(908)  评论(0编辑  收藏  举报