- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
hbase 的架构及设计
2021-02-16
—?扫描二维码?—加入架构集结群
??
对技术感爱好的同学可进群(备注:Java)
hbase是强全都性的海量数据库,无论是读写功能,或是数据容量,还是全都性方面,hbase都有格外优秀的表现。本文从架构方面探讨hbase的次要设计,从而在需要hbase的场合能够更好的设计和推断。首先,先来看看hbase的全体架构。除了DFS组件,hbase的基本组件图实际上就是Zookeeper,HMaster,RegionServer。
其中,RegionServer作为数据的实际存取服务器,次要担任数据的最终存取,一般情况都是多台;RegionServer依据不同的row key划分为很多region,每个region按挨次存放从startKey到endKey的数据。每个RegionServer有下面这些组件:
一个WAL: write ahead log. 听名知其意,该文件是落库前先写的日志文件,它最次要的作用是恢复数据用,类似于mysql的binlog。保存在HDFS中一个BlockCache: regionServer的读缓存。保存使用最频繁的数据,使用LRU算法换出不需要的数据。多个Region: 每个region包含多个store,每个CF拥有一个storestore: 每个store包含多个storeFile和一个memstoreMemstore: region的写缓存。保存还未写入HFile的数据,写入数据前会先做排序,每个region每个CF都会拥有一个Memstore,这就是为什么CF不能建太多的缘由。storeFile: 真正存储keyvalue数据的文件,其保存的文件是排序过的。一个storeFile对应一个HFile。保存在HDFS中
HFile分为数据块,索引块,bloom过滤器以及trailer。
Trailer次要记录了HFile的基本信息,各个部分的偏移和地址信息。Data block次要存储用户的key-value数据Bloom filter次要用来快速定位文件能否不在数据块。
比较简约混淆的是zookeeper和hmaster。Zookeeper担任保持多台Hmaster中只要一台是活跃的;存储Hbase的schema,table,CF等元信息;存储全部的region入口;监控regionServer的形态,并将该信息通知hmaster。可以看出来,zookeeper几乎是担任整个集群的关键信息存取以及关键形态监控。假如zookeeper挂了,那么整个hbase集群几乎就是不行用的形态。
Hmaster则是担任对table元数据的管理;对HRegion的负载均衡,调整HRegion的规划,比如分裂和合并;包括恢复数据的迁移等。Hmaster相当于对RegionServer的后台管理,对于一些定制的管理行为,zookeeper不行能帮你完成,于是乎才有了hmaster。假如hmaster挂了,除了不能对table进行管理配置,不能扩展region,并不会影响全体服务的可用性。
接下来我们来关注一些关键流程。
客户端初次读写的流程:1. 客户端首先从zookeeper中得到META table的位置,依据META table的存储位置得到具体的RegionServer是哪台2. 询问具体的RegionServer
写流程:1. 首先写入WAL日志,以防crash。2. 紧接着写入Memstore,即写缓存。由于是内存写入,速度较快。3. 立马前往客户端表示写入完毕。4. 当Memstore满时,从Memstore刷新到HFile,磁盘的挨次写速度格外快,并记录下最终一次最高的sequence号。这样系统能晓得哪些记录已经长久化,哪些没有。
读流程:1. 首先到读缓存BlockCache中查找可能被缓存的数据2. 假如未找到,到写缓存查找已提交但是未落HFile的数据3. 假如还未找到, 到HFile中连续查找数据
数据紧凑:
数据从memStore刷新到HFile时,为了保持简约,都是每个memStore放一个HFile,这会带来大量小HFile文件,使得查询时效率相对较低,于是,接受数据紧凑的方式将多个小文件压缩为几个大文件。其中,minor compaction是自动将相关的小文件做一些适当的紧凑,但不彻底;而major compaction则是放在午夜跑的定时任务,将文件做最大化的紧凑。
数据恢复流程:当RegionServer挂了,zookeeper很快就能检测到,于是将其下的region形态设置为不行用。Hmaster随即开头恢复的流程。1. HFile本身有2个备份,而且有特地的HDFS
文档评论(0)