Hbase架构说明
hbase架构说明
- Hregionserver
- 什么组织成的一个Region?
- 多个rowkey组织成一个region。如果一张表中存在多个region,那么每一个region表示表中的某一部分。
- 表
- 一张表的region,可以分布到不同的HregionServer中。
- 在默认情况下,region只有一个,但是随着数据的增加,region会逐渐增多。每一个region中的数据是顺序的(字典排序)
-
为什么要让HRegionServer和DataNode在同一台服务器上?
- 因为HBase中的真实数据是存储在HDFS上,如果在同一台的话,可以节省传输时间(也称为数据的本地化访问)
- 在一个HRegion中可以有至少一个Store的存在。store的内容可以存储在不同的HRegionServer中。
-
HBase可以有多个列族,但是只建议使用一个列族?
- 原因就是,store对应一个列族,但是store可以放在不同的HRegionServer中,所以如果用户跨列族访问,将有可能读取一行数据的时候需要访问多台的HRegionServer.
-
memstore
- 当用户put一条数据的时候,该数据会被先放到memstore中,当值达到一定的大小的时候,会flush成一个storefile文件。如:我们向Hbase中put多条数据的时候(在一张新表当中)你的HDFS上将没有任何的内容。
- Hfile:意思和StoreFile代表的是同一个东西,只是在Hbase中叫StoreFile,持久化之后叫Hfile。
- Hfile的产生:(1)memstore的大小达到指定的值的时候,会生成一个Hfile。(2)用户手动执行flush操作,将会生成一个Hfile。(3)用户执行stop-hbase.sh的时候.(4)当memstore挂掉的时候(掉电),有数据丢失的话,将会从Hlog中拿取数据出来,写入成一个HFile
-
断电处理
- 当用户在写入数据的时候,需要同时写入到memstore和Hlog都成功的时候,用户才能够看到操作成功。 一般情况下HLog的写入速度是高于HFILE。在整个架构中,如果一切正常的话,hlog将不会提供读取的作用。
欢迎关注本人的公众号,不定期推送问答模式技术问题,并可随机参与抽奖