什么是HBase?它是怎样工作的?终于有人讲明白了( 二 )

  • Hfile:Hfile是HBase最终数据存储的载体,它本质上是HDFS上的一个文件 。

  • 什么是HBase?它是怎样工作的?终于有人讲明白了

    文章插图
    ▲图2-10 Region Server的逻辑结构
    Region Server是HBase中真正存储数据的地方,它主要由WAL、BlockCache、MemStore和HFile组成 。
    06 MemStore与HFile为了提高数据写入时的吞吐量,HBase并不会实时的将写入的数据直接刷入磁盘,而是先将数据放入内存中进行保管,MemStroe对象就是负责此项任务的逻辑对象,它将数据以Key-Values的形式保存在内存中 。
    将数据直接放入内存读写虽然很快,但这样做并不安全,因为一旦服务器重启数据便会全部丢失 。所以HBase在此处设计了一种预写日志结合MemStroe的方式来解决这个问题 。
    【什么是HBase?它是怎样工作的?终于有人讲明白了】当客户端向HBase发起一次写入请求的时候,HBase首先会通过RegionServer将数据写入预写日志,之后再用MemStroe对象将数据保存到内存之中 。由于有了预写日志,当服务出现故障重启之后,Region可以通过日志将数据复原到MemStroe 。
    HBase的这种写入策略极大地提升了其数据写入的吞吐量,因为一旦写入日志的动作完成了就算写入数据成功 。同时预写日志是对磁盘文件的顺序写入操作,其写入速度也十分的迅速 。
    但是,毕竟内存空间是有限的,MemStroe不可能没有限制的存储数据 。所以当一个MemStroe存储的数据达到某个阈值的时候,HBase会将这个MemStroe的数据通过HFile的形式写入磁盘并清空该MemStroe 。
    HFile是HBase最终存储数据的载体,它本质上对应的是HDFS的文件 。因为HFile是以经过排序的Key-Values对象的形式进行存储的,所以它的在写入文件的时候只需要采用顺序写,写入速度非常快 。HFile的逻辑架构如图2-11所示 。
    07 使用场景HBase由于它强大的存储和查询性能使得它在大数据领域成为一个多面手 。
    1. 平台存储
    由于HBase构建在HDFS之上,这意味着它能像HDFS一样实现存储的线性扩容 。同时它又能提供毫秒级的查询性能 。所以它可以作为其他大数据组件的低层存储支持 。比如Apache Kylin就是使用HBase作为其数据索引的存储载体 。
    什么是HBase?它是怎样工作的?终于有人讲明白了

    文章插图
    ▲图2-11 Region Server的逻辑结构
    2. 应用存储/缓存
    由于HBase出色的写入性能,它非常适合大规模数据的实时写入场景 。比如在流计算、用户行为数据存储等场景就非常适合用HBase进行存储 。
    关于作者:朱凯,资深大数据专家和架构师,拥有10年IT从业经验,精通大数据、JAVA、Node.JS等技术 。对大数据领域的主流技术与解决方案有深入研究,擅长分布式系统的架构设计与整合 。曾主导过多款大数据平台级产品的规划设计与研发工作,一线实战经验丰富 。
    本文摘编自《企业级大数据平台构建:架构与实现》,经出版方授权发布 。




    推荐阅读