文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 了解HIve的概念;
⚪ 了解HIve与数据库的区别;
⚪ 了解HIve的特点;
一、简介
1. 概述
1. HBase原本是由Yahoo!公司开发后来贡献给了Apache的一套开源的、基于Hadoop的、分布式的、可扩展的、非关系型数据库。
2. 如果需要对大量数据进行随机且实时读写,那么可以考虑使用HBase。
3. HBase能够管理非常大的表:billions of rows * millions of columns。
4. HBase是仿照Google的Big Table来进行实现的,因此,HBase和BigTable的原理几乎一致,只有实现语言不同。HBase是使用Java语言实现的,BigTable使用的是C语言实现的 - HBase最终将数据落地到HDFS上。
5. HBase提供了2个大版本,并且2个版本都在同时更新。其中,Hadoop3.1.3版本支持的是HBase2.2.X及以上版本。
6. HBase作为非关系型数据库,不支持标准的SQL语法,提供了一套全新的命令。
7. HBase能够存储稀疏类型的数据,也因此HBase能够存储结构化(数据本身有结构,经过解析之后,能够用传统数据库中的一个或者几个表来存储)和半结构化数据(数据本身有结构,但是解析之后无法用传统数据库中的表来存储)。
8. HBase本身作为数据库,提供了完整的增删改查的功能。HBase基于HDFS来进行存储,HDFS的特点是允许一次写入多次读取,不允许修改而允许追加写入,但是HBase提供了"改"功能,HBase如何实现"改"功能的?- HBase实际上并没有去修改写入的数据,而是在文件末尾去追加数据。HBase会对写入的每条数据自动添加一个时间戳,当用户获取数据的时候,HBase自动返回最新的数据,那么从用户角度来看,就是发生了数据的修改。
9. 在HBase中,数据的每一个时间戳称之为是一个版本。
10. 如果要锁定唯一的一条数据,那么需要通过行键+列族+列+时间戳这四个维度来锁定,这种结构称之为是一个Cell(单元格)。
11. HBase中的表在创建的时候,如果不指定,那么只对外提供一个版本的数据。
12. 如果建好表之后再修改可以获取的版本,那么已经添加的数据不起作用。
13. 即使表允许对外获取多个版本的数据,在获取的时候如果不指定,依然只获取一个版本的数据。
2. 基本概念
1. Rowkey:行键
a. 在HBase中没有主键的概念,取而代之的是行键。
b. 不同于传统的关系型数据库,在HBase中,定义表的时候不需要指定行键列,而是在添加数据的时候来手动添加行键。
c. HBase默认会对行键来进行排序,按照字典序排序。
2. Column Family:列族/列簇
a. 在HBase中,没有表关联的概念,取而代之的是用列族来进行设计。
b. 在HBase中,一个表中至少要包含1个列族,可以包含多个列族,理论上不限制列族的数量。
c. 在HBase中强调列族,但是不强调列 - 在定义表的时候必须定义列族,但是列可以动态增删,一个列族中可以包含0到多个列。
3. namespace:名称空间
a. 在HBase中没有database的概念,取而代之的是namespace。
b. 在HBase启动的时候,自带了两个空间:default和hbase。hbase空间下放的是HBase的基本信息;在建表的时候如果不指定,则表默认是放在default空间下。
3. 基本命令
命令 | 解释 |
processlist | 查看当前HBase在执行的任务 |
status |