千家信息网

HBase体系结构是怎么样的

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章给大家分享的是有关HBase体系结构是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HBase是Apache hadoop集群中常用的非关系型数据,它是一种
千家信息网最后更新 2024年11月14日HBase体系结构是怎么样的

这篇文章给大家分享的是有关HBase体系结构是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

HBase是Apache hadoop集群中常用的非关系型数据,它是一种开源的、分布式的、多版本、面向列存储的数据库。

它的源码在 https://github.com/apache/hbase 上,妥妥的开源啊。。。

分布式是因为它的数据最后存储在HDFS上,所以它继承了hadoop分布式的优良传统(不知道能否这么理解)。

多版本就不多介绍了,版本更新快呗。。。

面向列的存储是它与传统关系型数据库最大的区别之一,它是根据rowKey、columnfamily、quaifer、timestamp(如果你有多版本的话)得到你最后的value值。。这个咱们以后再介绍,今天主要想写的是hbase的体系结构。

hbase的服务器体系结构也是主从服务器架构,分为HBase Master server和HRegionServers。

HBase Master server :主服务器,主要负责管理HRegionServers,个人理解:只是关于HRegionServer的决策权都是由它完成的。

具体的功能有:

1.用户对Table的增、删、改、查。

2。HRegionServer的负载均衡,调整HRegion的分布,像一个HRegionserver挂了,master会将挂了的HRegionserver上面的HRegion重新拿到,标上未分配,然后再分配一个活的HRegionServer,当然,它也得先询问下这个HRegionServer要不要了。。

3.在HRegion分裂后,负责新的HRegion的分配。 默认的HRegion的大小为64M,当超过这个大小的时候,它会自动分裂成两个,并且这个拆分速度很快,因为它在拆分的时候先会创建两个HRegion,而这两个HRegion先会保存对原HRegion的引用,当这两个新的HRegion数据拆分完成后,再将此引用去掉,并删除原HRegion。现在拆分完了,但是HRegion不是拆分完了就没事干了,它得找个HRegionServer管理啊,so,又得HBase Master Server分配了,同上~~

4.HRegionServer停机后,负责失效的HRegionServer上的HRegion分配。服务挂了,但是HRegion没挂啊,HRegion可以说是一个存储文件夹,一个服务挂了,找头(hbase master server)再找一个呗,然后继续做着保存或查询时被提取数据的工作。

HRegionServer的构成:

HRegionServer包含了一个HLog部分和HRegion部分(多个HRegion)。。

ps:这地方可能有些异议,因为网上一些图片显示的都是HRegion里才包含HLog,网上的资料比较老,所以这里我参考《hadoop实战》中的资料,它的版本是0.92,可能与现在的0.96版本还算比较接近的。。

HLog部分保存着用户操作hbase的日志(不排除也包含master管理hregion的操作,明天看一下),用户的操作都会先记录到HLog中,然后再保存到HRegion中。

而HRegion其实就是存储的实际数据了。它包含了多个HStore。

HStore:每一个列族都会形成一个HStore,它又由MemStore和多个HFile组成。

MemStore驻留在内存中,当数据保存时,数据会先存储到MemStore中,然后根据用户设定的显式刷写或隐式刷写模式,将数据再保存到HFile中。默认的存储模式是隐式存储。这个以后写client api的时候再介绍。。当然,这地方还有个注意的地方,当数据保存到MemStore,最后却没有保存到HFile中时,死机了。。HLog的作用来了,用户操作的指令保存在HLog中,它会将指令执行,再将重新保存到MemStore中,这样就可以完成后面的操作了。。

HFile负责的是实际数据的存储了,它是HBase中的最小单位了。它也可以进行拆分,也就是所谓的分区,让数据更加分散,读取数据的时候更加效率。

昨天未写完的部分今天补上。。

HBase的两个主要结构介绍完了,那么咱们现在就开始介绍一下它的存储流程和读取的流程。。

将它作为一个流程图可能不太合适。。不过它里面所需要的东西基本都包含了。。

先说下Zookeeper的作用:

  1. 存储了Root表的地址和HMaster的地址。存储ROOT的地址可以更快的查询到哪张表有数据,提高运算效率。存储HMaster地址是为了确定有哪些HMaster。

  2. 管理着MHaster。当HMaster失效时,它可以找到另一个HMaster,避免HMaster单点故障。

ROOT与.META与Region的结构是一样的,都是以键值对的形式保存数据。。

ROOT里面存储了对应的.META地址和开始结束信息(像1-5,说明ROOT里面存储了5个.META的地址信息)。

.META里面同样存储了对应的HRegion地址和开始结束信息。

好了,现在开始通过从客户端读取信息的角度开始分析了:

  1. client要读取信息,先查询下client 端的cache中是否存在数据,如果存在,刚直接返回数据。如果不存在,则进入到zookeeper,查找到里面的相应数据存在的Root表中的地址。

  2. 通过数据存在ROOT表中地址找到.META,最终找到HRegion。找到HRegion后,它会先访问MemStore中是否存在数据,如果存在,则直接读取。如果没有,就再到HFile中查找数据,并将数据放到MemStore。

  3. 最后数据返回到客户端显示。。

存储数据流程:

由于Hbase中默认的刷写方式是隐式刷写,所以你在put()数据时,它会自动保存到HRegion上,但当你批量处理数据时,它会将数据先保存到client端的cache中。当你关闭隐式刷写时,你put()的数据则会保存到client cache中,直到你调用刷写命令时,才会保存到HRegion中。具体的命令等明天我去公司的时候贴上来。。在家没环境。。

在HRegion部分的存储:要写入的数据会先写到HMemcache 和Hlog 中,HMemcache 建立缓存,Hlog 同步Hmemcache和Hstore 的事务日志,发起Flush Cache 时,数据持久化到Hstore 中,并清空HMemecache。

此处需要关注:

HBase 写数据,首先写入Memcache,并计入Log中,最后写入HStore中,如果在写入HStore是发生系统异常,就可以从Log中恢复数据,重新写 入HStore中。

感谢各位的阅读!关于"HBase体系结构是怎么样的"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

数据 存储 地址 结构 版本 两个 信息 时候 用户 部分 分配 服务 体系 体系结构 流程 管理 分布式 地方 多个 完了 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 辽宁省网络安全大讲堂观看 服务器自动生产线哪家正规 qq服务器被攻击 天翼校园客户端服务器 常见的数据库产品类型 织梦最后怎么导出数据库 软件开发及技术服务个股 数据库中文字母对应 计算机网络技术考网警 东莞市创富网络技术有限公司 软件开发文档背景图全屏 西北网络安全网 多线程 数据库插入 软件开发模型的寓意 cf服务器人数爆满什么意思 无锡网络服务器机柜来料加工 广州千蛛云网络技术有限公司 辽事通数据库操作异常 辽宁 sql备份数据库结构 武汉拉霸软件开发 屯昌县网络安全与信息化建设 学生 数据库 数据库用什么表示事物的特征 服务器系统不能装显卡 软件开发维护费包含什么科目 数据库宏和vba的联系和区别 技校网络技术主要学什么 校园网络安全规划与设计答辩 淮南求职招聘软件开发要多少钱 奉贤区挑选网络技术服务材料
0