先读图,再看文理解
简述架构图:
- Zookeeper,作为分布式的协调。RegionServer也会把自己的信息写到ZooKeeper中。
- HDFS是Hbase运行的底层文件系统
- RegionServer,理解为数据节点,存储数据的。
- Master RegionServer要实时的向Master报告信息。Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和Region的切分。
细化架构图:
逻辑结构(模型)
-
表(table)
-
划分数据集合的概念,和传统的db中的表的概念是一样的
-
-
行键(rowKey)
-
对应关系数据库中的主键,作用就是唯一标示一行记录
-
获取hbase中的一个记录(数据),要通过行键来获取
-
行键是字节数组, 任何字符串都可以作为行键
-
表中的行根据行键(row key)进行排序 ,数据按照Row key的字节序(byte order)排序存储
-
-
列簇(列族)columnFamily
-
简单的认为是一系列“列”的集合
-
-
列限定符(column Qualifier)
-
或者叫列
-
每个列簇都可以有多个列
-
-
时间戳(version)
-
在单元格中可以存放多个版本的数据
-
-
单元格(cell)
-
主要用来存储数据
-
单元格的定位要通过三级定位才能定位到具体的单元格
-
-
三级定位
-
行键+(列族:列)+时间戳
-
物理结构(模型)
-
Zookeeper
-
分布式协调
-
-
Master
-
HMaster没有单点问题,HBase中可以启动多个HMaster
-
负责Table和Region的管理工作
-
管理用户对Table的增、删、改、查操作
-
RegionServer的负载均衡
-
调整Region分布 ,在Region Split后,负责新Region的分配
-
在HRegionServer停机后,负责失效HRegionServer上的Regions迁移
-
-
RegionServer
-
RegionServer主要负责响应用户I/O请求
-
向HDFS文件系统中读写数据,是HBase中最核心的模块
-
HLog部分和多个Region部分
-
-
Hlog
-
HLog保存着用户操作hbase的日志
-
==实现了Write Ahead Log (WAL)预写日志==
-
Hlog会删除已存储到StoreFile中的数据
-
-
Region
-
区域
-
保存了row-key的固定区域范围的数据
-
一个Hregion对应一个Region
-
一个Hregion对应多个Hstore
-
-
Hstore
-
对应一个列簇(列族)
-
一个Hstore包含一个MemStore(内存储) 和多个StoreFile
-
-
MemStore
-
内存储
-
内存中的一块区域,一个Hstore对应一个MemStore
-
当MemStore中的内容存放不下了就会刷出到硬盘以一个个的StoreFile存储
-
-
StoreFile
-
其实就是数据的存储位置
-
对HFile的封装
-
-
Hfile
-
Hadoop File
-
Hdfs的一个文件对象
-
Hbase不适合解决所有的问题:
- 首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态
- 其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统。
- 最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好。因为HDFS默认的复制数量是3,再加上一个NameNode。