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] 举报,一经查实,本站将立刻删除。