HBase与HDFS之间的WAL(HLog)存储机制答疑解惑

简介: HBase与HDFS之间的WAL(HLog)存储机制答疑解惑

解答疑问一:


单机模式的Hbase应该是默认把数据存在本机硬盘中,直接对接的是本机的文件系统对吧?没有用到HDFS吧?单机模式要对接HDFS应该要主动配置HDFS的对吧?


作为hbase无论单机也好,集群也好,它都内置了hdfs客户端,如果在hbase配置了hdfs集群地址它就依赖,数据存储到hdfs;配置了本地目录,它就不依赖hdfs,直接存储到本地磁盘。


解答疑问二:


Hbase 的 Hlog (WAL)问题,每次 Hbase 的客户端的一个写操作,都会产生一条 Hlog 记录是吗?


WAL的原子格式为<HLogKey,WALEdit>,HBase的事务为行级写入,每增加一个写操作(包括一行多列更新),Hlog中就产生一条。HLogKey中的log sequence number作为WAL中一次操作的唯一标识符。


此时产生的 Hlog 是攒够一定体积(64KB之类的),在一次性发送到 HDFS 存储吗? 如果是的话,那这些 Hlog 存在哪里呢? 是存在 HBase 进程的用户态内存?


问题中也列出了HBase HLog持久化等级的几种策略:SKIP_WAL、ASYNC_WAL、SYNC_WAL、FSYNC_WAL,我们只谈默认策略:SYNC_WAL。


HBase写入流程:


第一线程会启动MVCC事务、争夺行锁、写MemeStore缓存、追加本地Log队列缓存、释放行锁、休眠。


第二线程会将本地Log队列缓存写入HDFS,但是缓存在HDFS DataNode尚未落盘。


第三线程Sync HDFS,实现DataNode落盘,并唤醒第一线程。


第一线程结束MVCC事务,并推进可读点,客户端才可以访问写入的此条记录。


因此写入WAL的记录会先存在HBase HRegionServer本机的内存缓冲队列、其次存在HDFS DataNode缓冲区,最后才会在HDFS落盘。基于HDFS存储的模式,Hlog肯定是存在HDFS之上。


可是这样的话 Hbase 这个软件宕机了(假设承载 Hbase 的 Server 不宕机,只是 Hbase 这个软件崩了,可能是被 kill -9 了或者自己的 Bug 把自己搞死了) ,Hlog 不就没了吗?这不完犊子吗? 或者是先存到本机的硬盘上?即发往 HDFS 前先通过本机的文件系统存在本机的硬盘中防丢?


HBase宕机后,缓冲区的记录存在丢失情况,但是基于强一致性要求和行级事务保证,这个过程MVCC事务并为结束,客户端会回馈写入失败,由客户端解决数据写入失败后的处理方式。


HBase并未在本地磁盘做WAL的二次存储,而是利用本地内存的缓冲队列提升批量写入分布式文件系统性能,由于WAL已经接入HDFS的目的就是满足高可靠性,因此没必要再做一层本地磁盘副本增加可靠性保证,有些框架例如Cassandra、InfluxDB会有hint off机制,在本地保存一份数据,主要是满足其他副本节点故障的高可用性。


相关文章
|
5月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的物理存储结构
本文介绍了HBase的存储结构,包括逻辑与物理存储结构。物理存储主要涉及StoreFile、HFile和HLog日志。HFile是HBase数据存储的核心格式,包含Data块、Meta块、File Info块等六部分,支持压缩以优化存储。HLog(预写日志)记录数据变更,确保数据可靠性,并在Region Server故障时用于恢复。最后,文章详细描述了HBase的写数据流程:先写入WAL日志,再写入MemStore,最终通过Flush操作将数据持久化到HFile中。
315 2
|
5月前
|
存储 关系型数据库 分布式数据库
【赵渝强老师】HBase的逻辑存储结构
HBase的逻辑存储结构包括命名空间、表和列族。命名空间类似关系型数据库中的数据库,用于逻辑划分和隔离数据;表以RowKey组织数据并按字典序排列,分为多个Region实现分布式存储;列族包含列且无需预先定义,由MemStore缓存写入数据,定期刷新生成Store File。文章通过视频和代码示例详细讲解了各部分的操作与功能。
180 2
|
12月前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
211 1
通过日志聚合将作业日志存储在HDFS中
|
存储 NoSQL 大数据
大数据存储:HBase与Cassandra的对比
【7月更文挑战第16天】HBase和Cassandra作为两种流行的分布式NoSQL数据库,在数据模型、一致性模型、数据分布、查询语言和性能等方面各有千秋。HBase适用于需要强一致性和与Hadoop生态系统集成的场景,如大规模数据处理和分析。而Cassandra则更适合需要高可用性和灵活查询能力的场景,如分布式计算、云计算和大数据应用等。在实际应用中,选择哪种数据库取决于具体的需求和场景。希望本文的对比分析能够帮助读者更好地理解这两种数据库,并做出明智的选择。
|
存储 缓存 分布式计算
详解HBase中的“WAL”(Write-Ahead Log)
【8月更文挑战第31天】
861 0
|
存储 机器学习/深度学习 分布式计算
HDFS与网络附加存储(NAS)的比较
【8月更文挑战第31天】
453 0
|
存储 Java 分布式数据库
使用Spring Boot和HBase实现大数据存储
使用Spring Boot和HBase实现大数据存储
|
存储 Java 分布式数据库
HBase构建图片视频数据的统一存储检索
HBase构建图片视频数据的统一存储检索
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。

热门文章

最新文章