HBase——强一致性详解

深入理解大数据领域HBase的分布式存储协议 随着大数据时代的到来,数据量呈现爆炸式增长,传统的数据库系统已经难以满足海量数据的存储和管理需求。HBase作为一种分布式、面向列的开源数据库,在大数据领域得到了广泛的应用。本文的目的是深入理解HBase的分布式存储协议,详细介绍其原理、架构、算法以及实际应用。范围涵盖了HBase分布式存储协议的各个方面,包括数据存储、分布式系统架构、数据一致性等。 阅读详情

转载于:https://www.cnblogs.com/captainlucky/p/4720986.html

Hbase是一个强一致性数据库,不是“最终一致性”数据库,官网给出的介绍:

“Strongly consistent reads/writes: HBase is not an "eventually consistent" DataStore. This makes it very suitable for tasks such as high-speed counter aggregation.”

这里要先提一下分布式系统的CAP原理:
Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

1.首先来理解下一致性

对于一致性,可以分为从客户端和服务端两个不同的视角。

从客户端来看,一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看,则是更新如何复制分布到整个系统,以保证数据最终一致。一致性是因为有并发读写才有的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。

从客户端角度,多进程并发访问时,更新过的数据在不同进程如何获取的不同策略,决定了不同的一致性。对于关系型数据库,要求更新过的数据能被后续的访问都能看到,这是强一致性。如果能容忍后续的部分或者全部访问不到,则是弱一致性。如果经过一段时间后要求能访问到更新后的数据,则是最终一致性

从服务端角度,如何尽快将更新后的数据分布到整个系统,降低达到最终一致性的时间窗口,是提高系统的可用度和用户体验非常重要的方面。对于分布式数据系统:

  • N — 数据复制的份数 
  • W — 更新数据时需要保证写完成的节点数 
  • R — 读取数据的时候需要读取的节点数 

如果W+R>N,写的节点和读的节点重叠,则是强一致性。例如对于典型的一主一备同步复制的关系型数据库,N=2,W=2,R=1,则不管读的是主库还是备库的数据,都是一致的。

如果W+R<=N,则是弱一致性。例如对于一主一备异步复制的关系型数据库,N=2,W=1,R=1,则如果读的是备库,就可能无法读取主库已经更新过的数据,所以是弱一致性。

对于分布式系统,为了保证高可用性,一般设置N>=3。不同的N,W,R组合,是在可用性和一致性之间取一个平衡,以适应不同的应用场景。

  • 如果N=W,R=1,任何一个写节点失效,都会导致写失败,因此可用性会降低,但是由于数据分布的N个节点是同步写入的,因此可以保证强一致性。 
  • 如果N=R,W=1,只需要一个节点写入成功即可,写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据,因此是弱一致性。这种情况下,如果W<(N+1)/2,并且写入的节点不重叠的话,则会存在写冲突  

2.HBase是强一致性系统 

Hbase具有以下特点

  • 每个值只出现在一个REGION
  • 同一时间一个Region只分配给一个Region服务器
  • 行内的操作都是原子的(原子性操作是指:如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行)。
  • put操作要么成功,要么完全失败。

联系上文提到的一致性特点,可以得出HBase是强一致性系统的结论。

当某台region server失效的时候,它管理的region 转移到其他region server时,需要根据WAL log(Write-Ahead Logging)来重做,这时候进行重做的region应该是不可用的,所以hbase降低了可用性,提高了一致性。设想一下,如果重做的region能够响应请求,那么可用性提高了,则必然返回不一致的数据(因为重做可能还没完成),那么hbase就降低一致性来提高可用性了。

3.HBase的强一致性和HDFS的多副本

一开始非常迷惑于HBase的强一致性和HDFS的多副本是怎么协同的。

这一块儿就需要对HBase和HDFS的读写数据流有个比较透彻的理解。

先假设HDFS的副本存储策略,也就是dfs.replication的值为3(默认值就是3)

这样所有存储在HDFS上的文件都有3个副本。那么,HBase的存储实例,也就是HFile也有3个副本。那么当某一个RegionServer崩溃时,并不用担心数据的丢失,因为数据是存储在HDFS上,哪怕崩溃的RegionServer所在的DataNode上有一个副本,在其他DataNode上也还有2个副本。

那么也许你要问,既然有3个副本,如何保证HBase的强一致性呢?

HFile是已经持久化在磁盘上了,而HFile是不能改变的(这个时候暂时把删除数据这个操作放到一边,相关内容请看下面的Note),一旦在某一个DataNode上生成一个HFile后就会异步更新到其他两个DataNode上,这3个HFile是一模一样的。

那也许你又要问,那我的数据是不断更新当中啊!

更新的数据是放在Memstore,只有当Memstore里的数据达到阈值,或者时间达到阈值,就会flush到磁盘上,生成HFile,而一旦生成HFile就是不可改变的(compaction,split就是后话啦)。

这里再提一下WAL的一致性

WAL是Write-Ahead logging,这个是Memstore里的数据在RegionServer崩溃时得以恢复的保证。WAL的实现是HLog,HLog也是存储在HDFS上的,所以HRegionServer崩溃了也不会导致HLog的丢失,它也有备份。

每一次更新都会调用写日志的sync()方法,这个调用强迫写入日志的更新都会被文件系统确认。

当前的sync()的实现是管道写,也就是HDFS写数据、生成副本的默认方式,这意味着当修改被写入时,它会被发送到第一个DataNode进行存储。一旦成功,第一个DataNode就会把修改发送到另一个DataNode来进行相同的工作。只有3个DataNode都已经确认了写操作,客户端才被允许继续进行;

另一种存储修改的方法是多路写,也就是写入被同时送到3台机器上。当所有主机确认了写操作后,客户端才可以继续。

两种方法的优缺点:

管道写需要时间去完成,所以它有很高的延迟,但是它能更好地利用网络带宽;多路写有着比较低的延迟,因为客户端只需要等待最慢的DataNode确认(假设其余都已成功确认)。但是写入需要共享发送服务器的网络带宽,这对于有着很高负载的系统来说是一个瓶颈。

目前有正在进行的工作能让HDFS支持上面两种方式。

 

Note:当客户端提交删除操作的时候,数据不是真正的删除,只是做了一个删除标记(delete marker,又称母被标记),表明给定航已经被伤处了,在检索过程中,这些删除标记掩盖了实际值,客户端读不到实际值。直到发生compaction的时候数据才会真正被删除。

【图文详解】HBase 的数据模型与架构原理详解 HBase 简介 https://hbase.apache.org/HBase, Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、 实时读写的分布式开源 NoSQL 数据库,面向列存储。主要用来存储非结构化和半结构化的松散数据。HBase 的设计思想,来源于 Fay Chang所撰写的Google论文 “Bigtable:一个结构化数据的分布式存储系统”。HBase ... 阅读详情

相关推荐

超10万,两台Mac Studio在家就能跑满血DeepSeek,网友:这是性价比最高的大模型一体机

在AI计算领域,没有比这更强的个人电脑了。这要从它的架构说起。对于那些有本地部署满血版DeepSeek需求的用户,目前建议的配置是选购512GB统一内存 + 1TB SSD,搭载M3 Ultra芯片的Mac Studio,官网售价74249元,可以叠加国补、教育优惠、12期分期等,这可能是目前门槛最低、性价比最高的满血版DeepSeek本地部署方案。对于企业而言,尽管Mac Studio确实可以部署6000亿参数的大模型,但在内存带宽、模型精调服务等方面,跟专用的大模型一体机仍有差距,采购需要谨慎评估。

2501_90444774的博客 1917

HBase入门、基础原理介绍

HBase入门、基础原理介绍

xfysq_的博客 1506

【Tableau】解决订阅报表PDF中文显示为乱码(方框)问题

一、问题描述 在tableau server网页端报表中文字符能正常显示,但在订阅后发送到邮箱时,以图片格式呈现的内容中中文字符显示为方框。 网页端报表能正常显示中文字符: 邮件中的报表不能正常显示中文字符: 二、问题分析 网页端字符显示情况是由html编码决定的,而tableau生成图片时是通过所部署的服务器的字体文件显示字体。因此可能是由于Linux服务器缺失相关的字体文件导致网页端选择的中文字体在服务器上缺失对应的字体文件导致的。则考虑在服务器引入对应的字体文件。 三、问题解决 1、查看服务器现有

why_not_study的博客 2833

修改hbase存储在hdfs上文件副本数

hbase修改存储文件副本数

lvhong1234的博客 1499

MTK MT6833平台屏幕与TP驱动移植实战:从FAE伪代码到内核模块集成

本文详细介绍了在MTK MT6833平台上进行屏幕与TP驱动移植的完整实战流程。文章从解析供应商提供的初始化伪代码入手,逐步拆解了在LK阶段点亮屏幕、在内核层集成Panel驱动以支持休眠唤醒,以及移植并调试sitronix_ts触摸驱动的核心步骤与关键技巧,为嵌入式开发人员提供了从零到一集成新硬件的清晰指南。

rnn9storyteller的博客 441

Coze知识库搭建:智能化管理与高效检索实践

知识管理系统是现代企业信息资产管理的核心基础设施,其核心原理是通过结构化存储和智能检索技术实现知识的快速流转。在技术实现上,基于NLP的语义理解引擎和知识图谱构建是关键,能够显著提升检索准确率和知识关联性。以Coze平台为例,其针对中文场景优化的分词算法和多模态处理能力,可有效解决技术文档管理中的术语识别和格式兼容问题。这类系统在开发团队知识沉淀、新员工培训等场景中价值显著,特别是当集成RBAC权限模型和自动化备份策略后,既能保障信息安全,又能实现持续的知识迭代。通过合理配置同义词扩展和权重调整,可使搜索命

weixin_29041195的博客 262

HBase数据一致性和容错

通过数据复制、节点监控和容错恢复等机制,可以应对节点故障和数据丢失问题,保证系统的高可用性和容错性。当一个节点发生故障时,一致性哈希算法可以自动将该节点上的数据重新分布到其他节点上,以保证数据的一致性。当一个节点发生故障时,其他副本可以继续提供服务,并且可以通过读取其他副本上的数据来保证数据的可用性。中,数据一致性是一个重要的问题,因为它需要确保数据在多个节点之间的复制和同步,并保证数据的可靠性和准确性。可以自动将该节点标记为不可用,并将该节点上的数据复制到其他节点上,以保证数据的可用性和一致性。

互联网知识分享 945

硬核反坑!YOLOv5训练避坑指南:根治梯度消失、不收敛、检测漏框三大核心问题(附实战代码+调优清单)

数据是基础,超参数是关键,模型是工具,训练策略是保障。梯度消失、不收敛、检测漏框这三大问题,本质上都是“数据-模型-训练”不匹配的结果。梯度消失/爆炸:优先调整学习率策略+梯度裁剪,其次优化模型结构;训练不收敛:优先清洗数据集,其次调优超参数,最后检查配置文件;检测漏框:优先重新聚类锚框,其次增强浅层特征,最后调整推理参数。YOLOv5训练的最高境界,不是调参,而是让数据、模型、训练策略三者完美匹配。按本文的方法反坑,你的YOLOv5训练一定能一次成功!🚀。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 233

HBase多副本和分区架构设计及核心技术原理设计

胡弦,视频号2023年度优秀创作者,互联网大厂P8技术专家,Spring Cloud Alibaba微服务架构实战派(上下册)和RocketMQ消息中间件实战派(上下册)的作者,资深架构师,技术负责人,极客时间训练营讲师,四维口袋KVP最具价值技术专家,技术领域专家团成员,2021电子工业出版社年度优秀作者,获得2023电子工业出版技术成长领路人称号,荣获2024年电子工业出版社博文视点20周年荣誉专家称号,2024电子工业出版社年度优秀作者。

huxian1234的专栏 2340

Oracle EBS 帐套(Ledger/SOB)如何定义会计主体、如何支撑多准则 / 多报告、组织与帐套的绑定关系、以及项目落地时的设计差异。下面从实现逻辑、核心要素、组织模型、多账簿、科目设计、项

本文对比了Oracle EBS R12与SAP S/4HANA在帐套(Ledger)设计上的核心差异。Oracle采用4C架构(科目/币种/日历/准则),帐套作为独立会计主体,主辅账物理隔离;SAP则以公司代码为主体,通过平行分类账在同一凭证中实现多准则核算。关键差异体现在:Oracle强调边界隔离,适合差异大的集团;SAP注重统一视图,适合实时合并需求。实施时需注意:Oracle避免过度建账套,SAP需统筹科目与维度设计。两者分别体现了"盒子"与"滤镜"的设计哲学。

金牌架构师 417

【OCPP】ocpp1.6J协议框架说明

本文档的目的是为读者提供创建正确的可互操作 OCPP JSON 实现 (OCPP-J) 所需的信息。我们将根据我们自己的经验,尝试解释什么是强制性的、什么是良好做法以及什么是不应该做的。毫无疑问,误解或歧义仍然存在,但我们旨在通过本文件尽可能地防止它们。IANA:互联网数字分配机构(OCPP-J:使用JSON通过WebSocket进行OCPP通信。特定的OCPP版本应使用J扩展进行指示。OCPP1.5J表示我们正在讨论1.5版本的JSON/WebSocket实现。

qq_53871375的博客 1241

HBase 强一致性详解

Hbase是一个强一致性数据库,不是“最终一致性”数据库,官网给出的介绍: “Strongly consistent reads/writes: HBase is not an “eventually consistent” DataStore. This makes it very suitable for tasks such as high-speed counter aggregation.

ruichaoo的博客 3697

第20期-英伟达笔试题型解析

英伟达作为AI领域的缔造者及硬件基石,是这几年最为炙手可热的公司。英伟达以其高性能GPU设计闻名,硬件工程师岗位的招聘通常包括笔试和技术面试,考察领域涵盖数字电路设计、处理器架构、嵌入式系统和信号处理等。通过搜索公开平台,收集了候选人的面试经历和相关技术问题,,通过分析公开平台收集的笔试面试经验,结合英伟达的GPU架构特点,整理出可能涉及的典型题目,并提供详细解析。 以下是基于英伟达(Nvidia)硬件工程师笔试题型的解析与总结,涵盖核心知识点、解题思路及案例分析。

启芯硬件的博客 746

(转)HBase——强一致性详解

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34175509的博客 147

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HBase in Action前三章笔记

近期接触HBase,看了HBase In Action的英文版。開始认为还行,做了些笔记。可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少。把前三章的一些笔记帖一下。后面几章内容不打算整理了。并非说书内容不好。 key-value存储。强一致性,多个RegionServer节点对client端是不暴露细节的 使用...

diandingyin9417的博客 158

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HBase 列式数据库详解

HBase 列式数据库详解

weixin_43924419的博客 114

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ZooKeeper完全指南:分布式系统的“协调者“

ZooKeeper是一个开源的分布式协调服务,是Hadoop生态系统的核心组件之一。配置管理命名服务分布式锁集群管理领导者选举fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;ZooKeeper一致性所有服务器数据一致可靠性多数节点存活即可用顺序性全局事务ID保证顺序实时性变更立即通知客户端简单性。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 2009

深入解析HBase如何保证强一致性:WAL日志与MVCC机制

与传统数据库的锁机制不同,MVCC允许每个写操作创建数据的新版本,而非直接覆盖原有数据。在HBase的典型部署中,WAL的同步写入和MVCC的版本控制共同构成了强一致性的技术基石,这使其在Hadoop生态中成为关键数据存储的选择。在电商平台的库存管理系统中,MVCC使得库存查询(读)和扣减(写)可以并发执行,既保证了实时显示的准确性,又避免了超卖情况的发生。例如,当某次写入的writePoint=100,即使系统崩溃,通过WAL恢复后仍能确保该版本数据完整存在,为后续读操作提供准确的版本可见性判断依据。

zuiyuelong的博客 966

浅谈Hbase 的强一致性

从一开始就知道hbase是CAP中的CP系统,即hbase是强一致性的.我原来一直以为hbase的强一致性是因为底层的HDFS写入时,必须所有副本都写入成功才能返回.最近才想明白,hbase之所以是CP系统,实际和底层HDFS无关,它是CP系统,是因为对每一个region同时只有一台region server为它服务,对一个region所有的操作请求,都由这一台region server来响应,自...

大神带我来搬砖 1533

总结:HBase原理篇

HBase是列式数据库,底层基于LSM数据结构进行存储,因此写入性能很强,读取性能较差。关于LSM的详细信息可以阅读文章: https://cloud.tencent.com/developer/news/340271 一、什么是列式数据库? 详情看下:https://blog.youkuaiyun.com/coderising/article/details/100021718 列式数据库是针对行数据库而言的,行式数据库是以一行数据作为一个存储单元,而列式数据库是以一列数据为一个存储单元,针对hbase来说,

w2009211777的专栏 6062

一文读懂 HBase 使用场景

HBase(Hadoop database)是一个分布式、可扩展、面向列的NoSQL数据库,本质上是一个Key-Value数据库,底层存储基于HDFS,原生支持MapReduce计算框架,具有高吞吐、低延时的读写特点。那么问题来了,我们满足哪些条件的时候选择HBase作为底层存储?

Focus on Lakehouse 1万+

HBase的一致性

HBase的一致性首先来理解下一致性HBase是强一致性系统 Hbase是一个强一致性数据库,不是“最终一致性”数据库,官网给出的介绍: “Strongly consistent reads/writes: HBase is not an “eventually consistent” DataStore. This makes it very suitable for tasks such as high-speed counter aggregation.” 这里要先提一下分布式系统的CAP原理:

a3125504x的博客 1853

HBase Replication详解

本文从全局出发,详细讲解了HBase的Replication和Replication Endpoint的用法及实践。往期文章回顾:一文读懂HBase多租户Replicat...

小米云技术 5773
上一篇: 大数据处理引擎Spark与Flink对比分析
下一篇: 如何为mysql建立索引
sofuzi
博客等级 码龄9年 20粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值