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机制,在本地保存一份数据,主要是满足其他副本节点故障的高可用性。


相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
7月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
329 2
|
3月前
|
存储 分布式计算 资源调度
通过日志聚合将作业日志存储在HDFS中
如何通过配置Hadoop的日志聚合功能,将作业日志存储在HDFS中以实现长期保留,并详细说明了相关配置参数和访问日志的方法。
40 0
通过日志聚合将作业日志存储在HDFS中
|
4月前
|
存储 缓存 分布式计算
详解HBase中的“WAL”(Write-Ahead Log)
【8月更文挑战第31天】
235 0
|
4月前
|
存储 机器学习/深度学习 分布式计算
HDFS与网络附加存储(NAS)的比较
【8月更文挑战第31天】
120 0
|
5月前
|
存储 NoSQL 大数据
大数据存储:HBase与Cassandra的对比
【7月更文挑战第16天】HBase和Cassandra作为两种流行的分布式NoSQL数据库,在数据模型、一致性模型、数据分布、查询语言和性能等方面各有千秋。HBase适用于需要强一致性和与Hadoop生态系统集成的场景,如大规模数据处理和分析。而Cassandra则更适合需要高可用性和灵活查询能力的场景,如分布式计算、云计算和大数据应用等。在实际应用中,选择哪种数据库取决于具体的需求和场景。希望本文的对比分析能够帮助读者更好地理解这两种数据库,并做出明智的选择。
|
5月前
|
存储 Java 分布式数据库
使用Spring Boot和HBase实现大数据存储
使用Spring Boot和HBase实现大数据存储
|
5月前
|
存储 Java 分布式数据库
HBase构建图片视频数据的统一存储检索
HBase构建图片视频数据的统一存储检索
|
6月前
|
Java 大数据 API
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
155 0
【大数据】HDFS、HBase操作教程(含指令和JAVA API)
|
6月前
|
存储 大数据 分布式数据库
使用Apache HBase进行大数据存储:技术解析与实践
【6月更文挑战第7天】Apache HBase,一个基于HDFS的列式存储NoSQL数据库,提供高可靠、高性能的大数据存储。其特点是列式存储、可扩展至PB级数据、低延迟读写及多版本控制。适用场景包括大规模数据存储、实时分析、日志存储和推荐系统。实践包括集群环境搭建、数据模型设计、导入、查询及性能优化。HBase在大数据存储领域扮演关键角色,未来有望在更多领域发挥作用。