HBase架构图
2019-11-04 14:01:20 0 举报
HBase架构图
作者其他创作
大纲/内容
HFile
HDFS
HDFS Clinet
Store
DataNode
HMaster和下边的HRS怎么通信呢?用HLog
.......
HLog
HRegion
MemStore
问题2:为什么要写在HLog里面??原因有2。答:1、因为写在HLog里面比直接写到HDFS里面执行效率要快的多。2、如果你HRS如果在此时宕机了,HLog能起到和hdfs里面的edits一样容灾备份作用。
Hbase扩展性强表现两个方面:1. HReginServer的业务扩展。2.存储扩展,就是HDFS的数据Node的扩展
StoreFile
问题4:有人问,那你说一个HRegion对应一张表嘛?或者说一张表就是一个HRegion嘛?答:这个不一定。当一个(例如user表)数据量很少的时候,少到一个HRegion就能存储全部数据的时候,可以说此时的HRegion就是这张user表。但数据量大到一个HRegion存不下的时候,就要横切做分布式存储(例如HRegion a和HRegion b),此时a和b就同属于user表或者说user表由不同服务器的Region a和Region b构成。
Hlog
问题8:那这一个Store怎么有多个StoreFile呢??答:一句话,你把MemStore比作一个杯子,你往里面灌数据的过程比作注入水,你不定时地倒水,就会从杯子里不定时地溢出数据,每次溢出的过程就是一个StoreFile。
问题5:有了表的概念,数据是怎么存储的呢?答:在我们创建一张表的时候,除了声明表名外,还有列簇,列簇在哪儿?在这里。也就是Store
问题6:有人又要问,一个HRegion里面好好的为啥有多个Store呢?如果多个Store在所属的Region做切分的时候岂不是也会被切分到多个服务器存储嘛?答:我目前理解一个Region里面会分多个列簇是业务需要,也就是虽然同属一个Region表,但是出于业务有差别会做细分为多个Store。我在网上了解到 ,如果某个列簇如果被分布式存储的时候,被导致scan性能低下,一般不建议过多设置列簇个数。
问题3:那你数据都写到HLog里面了,那数据在哪存储的呢?答:实际存储数据是在HRegion里里面。HRegion在哪儿呢?在这里。HRegion它类似于mysql里的一张表,那一台服务器可能就一张表嘛?确切地说,HRegionServer里面只有一张表么?答案肯定不是,HRegionServer对应多个HRegion。
ZK
作用:1平衡 Region Server 之间的负载2.分配 Region 给 Region Server
HMaster
HReginServer
HBase
问题7:这怎么有两个东西StoreFile,HFile ??答:一句话,MemStore内存中的数据会以HFile的形式做存储,Hbase把这种存储形式叫做StoreFile.
0 条评论
下一页