1.hbase的架构概念
1)region,可以理解为是hbase的分区,根据rowkey存储在不同的region上
2)region作用就是存储,默认情况下,表一开始只有一个region
3)region完整的名称:nstest:tb1,,1490500444471.6ad4560a25870f82a0f604b1275c72d4.(在60010端口浏览器下查看)
4)region唯一被一台regionserver所管理(节点机器)
regionserver专门存储hbase数据的
最小的存储单元就是region,根据rowkey的不同存储在不同的region上,那么这个region就会被分到不同的regionserver上
一个regionserver可以管理多个区,等分成两个新的region,那原来的region就没有了
如果某台机器的负载很空,那么有可能两个region都会被分配到这台机器上
虽然等分了,但是仍然属于那张表
最小的单元,底层字节。按字节存储
每一个store又表示的是一个列簇
memstore就是内存中划分的一个区间
storefile就是底层存储的文件
regionserver -> region -> 多个store(列簇)->memstore和多个storefile
WALs-》记录日志(比如:put、delete等操作行为都会记录在这个日志文件中)
5)目录结构
namespace -> table -> region -> 列簇store -> storefile
6)Hlog file-》预写日志
存储的时候会先往log中存储一份,再往内存中写
作用:避免机器当机内存数据丢失
可以通过预写日志文件来进行恢复
Hfile(store file)&Hlog file
flush 手动干预-》底层实现的就是Hfile
7)用户写入的过程
compaction操作
split操作-》region分割过程
region ->input data ->storefile*n -> 合并大文件compaction操作
8)hbase:namespace这张表记录的rowkey是当前hbase中的所有namespace
hbase:meta这张表记录元数据
2.读写的思想
读:
1)根据表名和rowkey找到对应的region
2)zookeeper存储了meta表的region信息
3)从meta表中获取相应的region的信息
4)找到对应的regionserver
5)查找对应的region
写:
1)根据表名和rowkey找到对应的region
2)zookeeper存储了meta表的region信息
3)从meta表中获取相应的region的信息
4)找到对应的regionserver
5)正常的情况
WAL预写日志,一个regionserver维护一个hlog
memstore内存中去写(必须达到一定大小或者时间才会溢写,flush到磁盘)-》storefile
版本的合并其实指的就是值的更新
6)考虑范围:startkey&endkey
7)zookeeper存储了meta表的region信息
8)无论是检索还是插入数据都必须要给一个tbname
9)无论是检索还是插入数据都必须要给一个rowkey
10)rowkey存储在region的,先要找到rowkey在哪
11)得到region信息,就获取region被哪台regionserver所管理
12)根据系统meta表元数据去查找
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于