《企业级大数据平台构建:架构与实现》—— 2.3.6 MemStore与HFile
【摘要】 本书摘自《企业级大数据平台构建:架构与实现》——书中第2章,2.3.6节,作者是朱凯。
2.3.6 MemStore与HFile
为了提高数据写入时的吞吐量,HBase并不会实时的将写入的数据直接刷入磁盘,而是先将数据放入内存中进行保管,MemStroe对象就是负责此项任务的逻辑对象,它将数据以Key-Values的形式保存在内存中。
将数据直接放入内存读写虽然很快,但这样做并不安全,因为一旦服务器重启数据便会全部丢失。所以HBase在此处设计了一种预写日志结合MemStroe的方式来解决这个问题。
当客户端向HBase发起一次写入请求的时候,HBase首先会通过RegionServer将数据写入预写日志,之后再用MemStroe对象将数据保存到内存之中。由于有了预写日志,当服务出现故障重启之后,Region可以通过日志将数据复原到MemStroe。
HBase的这种写入策略极大地提升了其数据写入的吞吐量,因为一旦写入日志的动作完成了就算写入数据成功。同时预写日志是对磁盘文件的顺序写入操作,其写入速度也十分的迅速。
但是,毕竟内存空间是有限的,MemStroe不可能没有限制的存储数据。所以当一个MemStroe存储的数据达到某个阈值的时候,HBase会将这个MemStroe的数据通过HFile的形式写入磁盘并清空该MemStroe。
HFile是HBase最终存储数据的载体,它本质上对应的是HDFS的文件。因为HFile是以经过排序的Key-Values对象的形式进行存储的,所以它的在写入文件的时候只需要采用顺序写,写入速度非常快。HFile的逻辑架构如图2-11所示。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)