----------------------------------------
hbase表数据的检索流程图(读和写的流程)
1、hbase在Hadoop集群中的物理架构
master通常是Hadoop集群中的一台或两台(backup-Master)
regionserver通常是Hadoop集群中的部分或全部
regionserver通常和datanode部署在同一台服务器上
比如datanode是10个
regionserver可以是10个或小于10个
zookeeper通常是集群中单独的3/5台服务器
2、hbase架构图重要组件的名称及作用
client:
读写访问hbase的用户
zookeeper:
基于观察者模式监控master和regionserver运行状态,保证hbase的高可用性
存储了hbase的寻址入口
存储了hbase表的meta元数据表的位置信息
meta表一般只有一个region
region存在哪台regionserver上
meta元数据表存储了哪些信息:
一张表有哪些reigon
region分别分配到哪些regionserver
每个reigon的startkey和stopkey的大小
master:
管理regionserver并分配表的region给regionserver
对集群的region的数量进行负载均衡管理
master会借助zookeeper感知regionserver的上线和下线
master一般会有两台(backup-Master),保证master的高可用性
master不参与hbase表数据的读和写,负载通常比较低
master宕机一段时间内集群可以保持正常的读写
regionserver:
管理所在服务器节点上的所有region
负责响应客户端的读写请求(IO)
处理三大机制(flush、compact、split)
Hlog:
预写日志
用来临时保存写入到memstore中的数据,防止宕机造成memstore中的数据丢失
Hadoop:
利用hdfs给hbase提供存储,hbase是相当于Hadoop的一个客户端
hdfs上存储了hbase的两种数据:
HFile :
hbase表的数据文件
Hflie文件是Hadoop的二进制格式文件
Hlog :
预写日志
Hlog是Hadoop的sequence格式的文件
hbase表数据的写入流程:(根据rowkey进行写入)
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
以前的版本hbase的系统表除了meta表还有root表
在root表中存储了meta表的位置信息
新版本中将meta表的位置信息直接存入zookeeper中
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),
client找到当前要写入的表对应的region及所在regionserver信息
4、 client向对应的regionserver发起写入请求
5、regionserver收到client请求并响应,client先把数据写入到Hlog防止数据丢失
6、再把数据写入到memstore内存缓存区(默认大小128M)
7、当数据写入到Hlog及memstore内存缓存区都成功时,写入才算成功
8、当memstore达到128M或其他的因素的触发,会将memstore中的数据flush成storeFile
9、当storeFile越来越多,会触发compact合并,将多个storeFile文件最终合并成一个文件
合并分为minor compact 和 major compact
在大合并期间打上‘删除’标签的cell或者过期的cell会被统一清理
10、当某个store下的storeFile文件的最终合并后的大小达到10G时,会触发整个region的split分割,一个region一分为二,由master进行分配
hbase表数据的读流程:(根据rowkey读)
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
以前的版本hbase的系统表除了meta表还有root表
在root表中存储了meta表的位置信息
新版本中将meta表的位置信息直接存入zookeeper中
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),client找到当前要写入的表对应的region及所在regionserver信息
4、client向对应的regionserver发起读请求
5、regionserver收到客户端的读请求,会先扫描memstore,在扫描blockcache(读缓存),没有找到数据后再去读取storeFile文件
6、regionserver将数据响应给client
hbase表数据的检索流程图(读和写的流程)
1、hbase在Hadoop集群中的物理架构
master通常是Hadoop集群中的一台或两台(backup-Master)
regionserver通常是Hadoop集群中的部分或全部
regionserver通常和datanode部署在同一台服务器上
比如datanode是10个
regionserver可以是10个或小于10个
zookeeper通常是集群中单独的3/5台服务器
2、hbase架构图重要组件的名称及作用
client:
读写访问hbase的用户
zookeeper:
基于观察者模式监控master和regionserver运行状态,保证hbase的高可用性
存储了hbase的寻址入口
存储了hbase表的meta元数据表的位置信息
meta表一般只有一个region
region存在哪台regionserver上
meta元数据表存储了哪些信息:
一张表有哪些reigon
region分别分配到哪些regionserver
每个reigon的startkey和stopkey的大小
master:
管理regionserver并分配表的region给regionserver
对集群的region的数量进行负载均衡管理
master会借助zookeeper感知regionserver的上线和下线
master一般会有两台(backup-Master),保证master的高可用性
master不参与hbase表数据的读和写,负载通常比较低
master宕机一段时间内集群可以保持正常的读写
regionserver:
管理所在服务器节点上的所有region
负责响应客户端的读写请求(IO)
处理三大机制(flush、compact、split)
Hlog:
预写日志
用来临时保存写入到memstore中的数据,防止宕机造成memstore中的数据丢失
Hadoop:
利用hdfs给hbase提供存储,hbase是相当于Hadoop的一个客户端
hdfs上存储了hbase的两种数据:
HFile :
hbase表的数据文件
Hflie文件是Hadoop的二进制格式文件
Hlog :
预写日志
Hlog是Hadoop的sequence格式的文件
hbase表数据的写入流程:(根据rowkey进行写入)
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
以前的版本hbase的系统表除了meta表还有root表
在root表中存储了meta表的位置信息
新版本中将meta表的位置信息直接存入zookeeper中
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),
client找到当前要写入的表对应的region及所在regionserver信息
4、 client向对应的regionserver发起写入请求
5、regionserver收到client请求并响应,client先把数据写入到Hlog防止数据丢失
6、再把数据写入到memstore内存缓存区(默认大小128M)
7、当数据写入到Hlog及memstore内存缓存区都成功时,写入才算成功
8、当memstore达到128M或其他的因素的触发,会将memstore中的数据flush成storeFile
9、当storeFile越来越多,会触发compact合并,将多个storeFile文件最终合并成一个文件
合并分为minor compact 和 major compact
在大合并期间打上‘删除’标签的cell或者过期的cell会被统一清理
10、当某个store下的storeFile文件的最终合并后的大小达到10G时,会触发整个region的split分割,一个region一分为二,由master进行分配
hbase表数据的读流程:(根据rowkey读)
1、client先去访问zookeeper,从zookeeper上获取meta表的位置信息
以前的版本hbase的系统表除了meta表还有root表
在root表中存储了meta表的位置信息
新版本中将meta表的位置信息直接存入zookeeper中
2、client向meta表的region所在的regionserver发起访问,读取meta表的数据,获取了hbase集群上所有的表的元数据
3、根据meta表的元数据信息(某张表有几个region及region如何分配及每个reigon的startkey和stopkey),client找到当前要写入的表对应的region及所在regionserver信息
4、client向对应的regionserver发起读请求
5、regionserver收到客户端的读请求,会先扫描memstore,在扫描blockcache(读缓存),没有找到数据后再去读取storeFile文件
6、regionserver将数据响应给client