1、部署架构
1. 架构图

2. Master服务器
- 负责维护表结构信息
3. RegionServer服务器
- 存储实际的数据
- 保存的数据直接存储到Hadoop的HDFS上
4. Client获取数据是由Client直接连接RegionServer的,所以当Master挂了之后依然可以获取数据,但是不能更新建表
5. RegionServer非常依赖ZooKeeper
- ZooKeeper管理RegionServer上的信息,包括具体信息存在哪个RegionServer上面
- Client每次与Client连接,都先和ZooKeeper通信,查询需要哪个RegionServer,再去连接
2、Region是什么
1. Regio(区域)是一段数据的集合
2. 特性
- 不能跨服务器,一个RegionServer上有很多的Region
- Region是基于HDFS的,所有的数据存取操作都是基于HDFS实现
3、RegionServer是什么
1. 是存放Region的容器
2. 当客户端从ZooKeeper获取RegionServer的地址后,它会直接从 RegionServer获取数据。
4、Master是什么
1. Master只负责各种协调工作,比如建表、删表、 移动Region、合并等操作。
5、存储架构
1. 存储结构图

2. 最基本的存储单位是列(column),一个列或者多个列形成一行(row)
3. 每个行(row)都拥有唯一的行键(row key)来标定这个行的唯一性
4. 每个列都有多个版本,多个版本的值存储在单元格(cell)中
5. 若干个列可以成为列族
6、RowKey是什么
1. rowkey完全是由用户指定的一串不重复的字符串
2. HBase中无法根据某个column来排序,系统永远是根据rowkey来排序的
7、列族是什么
1. 建表的时候是不需要制定列的,因为列是可变的,它非常灵活,唯一需要确定的就是列族
2. 所以一个表的列族是一开始就定义好的
3. 在HBase中一个列的名称前面总是带着它所属的列族
4. Hbase会把相同列族的列尽量放到一台机器里
4. 列族示例
```
brother:age
brother:name
parent:age
parent:name
```
8、单元格是什么
1. 一个列上可以存储多个版本的值,多个版本的值被存储在多个单元格里面,多个版本之间用版本号 (Version)来区分
2. 唯一确定一条结果的表达式应该是行键:列族:列:版本号(rowkey:column family:column:version)
9、Region和行的关系
1. 一个Region就是多个行的集合。在Region中行的排序按照行键(rowkey)字典排序。
10、与关系型数据库的对比
1. 关系型数据库

2. Hbase

3. 在关系型数据库中,每个行都是不可分割的,也就是说三个列必须在一起,而且要 被存储在同一台机器上
4. 在Hbase中,每一个行都是离散的。因为有列族的存在,所以一个行里面的不同列甚至被分配到了不同的服务器上
网友评论