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'
该系列博文仅作为个人学习笔记。