微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HBase的框架

hbase的架构:

在Hbase中,Client是访问Hbase的接口,维护cache来加快对Hbase的访问.

zookeeper用来协调HMather与Client的,保证一个集群中只有一个活跃的HMather,并用来监控RegionServer的上线,下线信息.实时通知给HMather.存储Hbase的schema和table元数据.

HMather主要负责对HregionServer进行管理,保证有且只有一个Mather.

在存储数据时,由于刚开始表的数据量不是特庞大,所以就只有一个Region(一片连续的数据),而当数据量慢慢增大时,到达一个阈值以后,Region就会进行裂变,产生更多的Region,当到达一定阈值后,这些Rengion被分配到不同的HregionServer当中保存(由Hmather分配).

一个Region当中又由多个Store组成,一个Store对应的是一个CF(列组),Store包含了位于内存当中的memstore和磁盘中的Storefile,当保存数据时,先写入的是内存当中的memstore,而当内存不够了,到达某一个阈值的时候,RegionServer便会启动溢血线程,写入当磁盘Storefile当中.最后当storefile的文件数量变的越来越多的时候,系统会进行合并,合并的方式有两种,一种是系统自动调用的minor,另外一种是认为让系统主动调用的majar compacation(此合并方式会版本合并和删除操作,删除版本记录),最后当一个region所有的storefile也到达一定的阈值之后,便会有由Hmather分配,实现负载均衡.

Storefile在HDFS集群当中叫做Hfile.

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

hbase的组件及其作用:

Client:

​ 包含访问HBase的接口并维护cache来加快速访问Hbase.

zookeeper:

​ 保证不管任何时候,都有且只有一个Hmather,

​ 保存所有region的寻址入口,监控RegionServer.

​ 对Hmather进行实时通讯.

​ 存储Hbase的schema和table元数据.

Mather:

​ 为RegionServer进行分配region.负责实现负载均衡.

​ 发现失效的RegionSevrer,并重新分配它之上的region

​ 管理用户对table的增删改操作.

RegionServer:

​ 用来维护region.处理 他们的IO请求

​ 负责切分在运行中变的过大的Region.

Region:

​ 它是被Hbase自动切分成的区域,是一段连续的数据.

​ 一开始每个表只有一个region,当数据量逐渐增大后,region就会裂变成等分大小的区域,并且会随着数据量逐渐增多.

Store:

一个region是由多个store组成的,一个store对应一个列族CF.

Memstore:

​ store包含两个存储区域,一个是持久化到磁盘上的Storefile,另外一个就是运行在内存当中Memstore,在写入数据时,数据先会写到Memstore上,而当到达一定阈值的时候,RegionServer就会触发溢写线程,数据会被写入storefile当中.每次写入形成一个单独的Storefile.

Storefile:

​ 当storefile文件数量到达一定的阀值之后,系统会进行合并,一个为minor,小文件合并,一个为majar compaction,这个合并会进行版本合并和删除工作,形成更大的storefile.

​ 当一个region所有的大小和数量都超过一定的阈值之后,会把当前的region切分成相同大小的两份,又Hmather分配到不同的RegionServer当中去.实现负载均衡.

​ 客户端检索数据的时候,先在内存memstore中找,找不到才会进行磁盘IO,在storefile当中寻找.

HBase写数据流程:

1,Client先访问zookeeper,从Meta获取相应region信息,然后找到Meta表的数据
2,根据namespace、表名和rowkey根据Meta表的数据找到写入数据对应的region信息
3,找到对应的regionserver
4,把数据分别写到HLog和MemStore上一份
4,MemStore达到一个阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以总HLog上恢复)
5,当多个StoreFile文件达到一定的大小后,会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
6,当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split),并由Hmaster分配到相应的HRegionServer,实现负载均衡

HBase读数据流程
1,Client先访问zookeeper,从Meta表读取region的位置,然后读取Meta表中的数据。Meta中又存储了用户表的region信息。
2,根据namespace、表名和rowkey在Meta表中找到对应的region信息
3,找到这个region对应的regionserver
4,查找对应的region

hbase集群搭建步骤:

1、环境准备 hostname hosts iptables 网络
2、时间同步 时间服务器
yum install ntp -y
ntpdate 202.120.2.101
3、免秘钥
主-主
主-从
ssh-keygen
ssh-copy-id nodeX
4、jdk环境变量
5、解压 环境变量

6、修改配置文件(hbase-env.sh, hbase.site.xml,regionservers,backup-masters,hdfs-site.xml)

7,启动:start-hbase.sh

hbase的基本操作:

创建表:create ‘表名’,‘列族1’[…]

添加记录:put ‘表名’,‘RowKey’,‘列族名称:列名’,‘值’

查看记录:get ‘表名’, ‘RowKey’, ‘列族名称:列名’

查看表中的记录总数:count ‘表名’

删除记录:delete ‘表名’ , ‘RowKey’, ‘列族名称:列名’

删除一张表:先要屏蔽该表,才能对该表进行删除。第一步 disable ‘表名称’ 第二步 drop ‘表名称

查看所有记录:scan '表名" ’

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐