Hbase工作原理

2023-09-13 17:13:28

Hbase:HBase 底层原理详解(深度好文,建议收藏) - 腾讯云开发者社区-腾讯云

Hbase架构图

同一个列族如果有多个store,那么这些store在不同的region

Hbase写流程(读比写慢)

MemStore Flush

Hbase读流程:

先读block Cache,若命中了结果,则不读磁盘;若没有命中结果,那么同时读MemStore(内存)和StoreFile(磁盘),将从磁盘读取的结果放到内存(Block Cache)中,然后和从MemStore读取结果进行merge(比较时间戳返回最新数据)

Compact操作:

该操作非常消耗资源,一般关闭该操作的自动执行。有需要的话,手动执行。

数据真正的删除时机:

Flush时会删数据,合并文件时会删除数据。

        HBase 不直接操作文件,而是通过 HDFS(Hadoop Distributed File System)进行数据存储。因此,HBase 中的数据删除并不涉及直接删除底层文件。相反,HBase 通过维护一系列称为“HFile”的底层数据文件来管理数据。

        当执行删除操作时,HBase 实际上是将删除标记(Tombstone)写入相应的 HFile 中。这个删除标记会告诉 HBase 在查询时跳过这些被标记为删除的数据。随着时间的推移,HBase 会定期进行合并(compaction)操作,将多个 HFile 合并为更大的文件,并在此过程中清理掉已经被标记为删除的数据块。

        由于合并操作是由 HBase 自动触发和处理的,因此具体删除标记从被写入到实际清理的时间会有一定的延迟。这个延迟取决于多个因素,包括表的负载、合并策略以及系统配置等。

        总之,HBase 中删除数据的时间可以说是异步的,并且受到 HBase 的自动合并和清理机制的影响。根据具体的情况,可以通过调整 HBase 的合并策略和配置参数来控制删除操作对存储空间的影响和清理速度。

Split操作:

split时机:

HBase 的拆分(split)是根据一定的策略和条件自动触发和执行的。以下是一些常见的 HBase 拆分时机:

  1. Region 大小超过设定的阈值:HBase 监测每个 Region 的大小,并在某个 Region 的大小超过预设的阈值(称为 split size)时触发拆分。这个阈值可以通过配置参数进行设置,通常以字节数或行数来表示。

  2. 基于 Region 数量的拆分:当集群中的 Region 数量达到了预设的最大 Region 数量时,HBase 可能会触发拆分操作。这是一种基于负载均衡的策略,确保数据在不同的 RegionServer 上更加均匀地分布。

  3. 定期拆分:HBase 还可以按照一定的时间间隔或频率定期执行拆分操作。这样可以避免 Region 过大导致查询性能下降,同时也有助于数据的均衡分布。

  4. 手动触发拆分:除了自动触发,HBase 还支持手动触发拆分操作。管理员可以通过 HBase Shell 或 API 来手动指定需要拆分的 Region,以满足特定的需求。

需要注意的是,拆分操作是一个比较昂贵的操作,可能会对系统产生一些开销。因此,拆分的时机需要谨慎选择,避免过于频繁或不必要的拆分操作。可以通过定期监测和调整配置参数来优化拆分策略,以适应具体的业务需求和系统负载情况。

Split流程:

在 HBase 中,split(拆分)是指将一个大的 Region 拆分成多个较小的子 Region 的过程。这个过程是自动进行的,由 HBase 系统根据一定的策略和条件触发和执行的。

下面是 HBase 的拆分流程概述:

  1. 监测 Region 大小:HBase 运行时会监测每个 Region 的大小。当一个 Region 的大小超过了预设的阈值(称为 split size),就会被标记为需要拆分。

  2. 触发拆分:一旦有一个或多个需要拆分的 Region 被标记,HMaster(HBase 的主节点)会收到这些拆分请求,并决定如何进行拆分操作。

  3. 拆分策略:HBase 提供了两种拆分策略:按行键范围拆分和按 Region 数量拆分。

    • 按行键范围拆分:HBase 将会根据 Region 当前的行键范围,计算出新的行键范围并生成新的子 Region。

    • 按 Region 数量拆分:HBase 将会根据当前 Region 的数量和预设的最大 Region 数量,将一个大的 Region 均匀地拆分成多个子 Region。

  4. 创建新的子 Region:根据选定的拆分策略,HBase 会创建新的子 Region,并将其分配给适当的 RegionServer 进行处理。

  5. 数据拷贝:新的子 Region 在创建后会开始从父 Region 拷贝数据。这个过程可能需要一些时间,具体取决于数据量和系统的负载情况。

  6. 更新元数据:拆分完成后,HBase 会更新相应的元数据(例如 .META. 表)以反映新的子 Region 的信息和位置。

整个拆分流程是自动进行的,并且由 HBase 系统根据配置和内部算法来管理和执行。拆分操作可以使数据在集群中更均衡地分布,提高系统的性能和可扩展性。

更多推荐

自动化测试的生命周期是什么?

软件测试发展到今日,已经逐渐标准化且能力更强,其流程每天都在发展。测试人员的技术熟练程度对于整个测试阶段的成功来说至关重要。测试不再意味着仅仅发现错误;它的范围已经扩大,从任何开发项目开始就可以看出它的重要性。当谈论起自动化测试生命周期(AutomationTestingLifeCycle)时,大多数人认为这只是SDL

【vue】vue 中插槽的三种类型:

文章目录一、匿名插槽:``二、具名插槽:``三、作用域插槽一、匿名插槽:<slot></slot>1.没有为插槽指定名称2.通过slot标签可以添加匿名插槽3.在使用组件的时候,组件中的内容会填充到所有匿名插槽的位置,所以在封装组件的时候,匿名插槽一般只有一个4.匿名插槽可以设置默认的内容,如果没有传入内容就使用默认内

ceph分布式存储部署

一、概述是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。特点1、统一存储虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。2、高扩展性扩容方便、容量大。能够管理上千台服务器、EB级的容量。3、可靠性高支持

c++ 模版元编程 基于条件的编译

基于条件的编译是指根据不同的条件选择是否编译某段代码或选择不同的代码路径。在C++的模板元编程中,我们可以利用模板特化和std::enable_if技术来实现基于条件的编译。通过基于条件的编译,我们可以在编译期间根据类型特征或其他条件,决定采取不同的代码路径。这种能力使得我们可以针对不同类型或条件编写更加灵活和通用的代

死锁详细解读

目录死锁(1)一、死锁的定义二、产生死锁的原因三、产生死锁的四个必要条件四、解决死锁的方法死锁(2)第三节死锁避免一、死锁避免的概念二、安全状态与安全序列三、银行家算法第四节、死锁的检测与解除一、死锁的检测和解除二、死锁检测的算法三、解除死锁的方法死锁(3)第五节资源分配图一、资源分配图二、死锁定理第六节哲学家就餐问题

SIEM:网络攻击检测

如果您正在寻找一种能够检测环境中的网络威胁、发送实时警报并自动执行事件响应的网络攻击检测平台,Log360SIEM解决方案可以完成所有这些以及更多,能够准确检测安全威胁并遏制网络攻击。网络攻击检测能力基于规则的攻击检测MITREATT&CK实现来检测APTS基于ML的行为分析基于规则的攻击检测使用从Log360强大的关

Spring Cloud Alibaba Nacos注册中心(单机)

文章目录SpringCloudAlibabaNacos注册中心(单机)1.docker安装nacos(先别着急)2.配置nacos持久化到mysql、2.1properties文件3.java注册3.1POM文件3.2properties文件3.3测试配置中心4.注册中心4.1配置文件4.2测试类4.3补充演示Spri

Vivado初体验LED工程

文章目录前言一、PL和PS二、LED硬件介绍三、创建Vivado工程四、创建VerilogHDL文件五、添加管脚约束六、添加时序约束七、生成BIT文件八、仿真测试九、下载测试前言本节我们要做的是熟练使用Vivado创建工程并实现对LED灯控制,每秒钟控制开发板上的LED灯翻转一次,实现亮、灭、亮、灭的控制。会控制LED

中国这么多 Java 开发者,应该诞生出生态级应用开发框架

1、必须要有,不然就永远不会有应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。很多很多软件系统都会有Java开发的部分,尤其是政府部门的软件系统大量的使用了Java。市场非常的大,我们有很多的

【国产32位mcu】电动车控制芯片CS32F031C8T6的应用

近年来,随着“新国标”的落地,双轮电动车在智能化、强性能、安全性等方面不断演进,带动了新一轮的换车高峰。电动车控制器作为双轮电动车的核心部件,迎来新的增长。芯海科技32位MCUCS32F031C8T6,作为电动车控制器的主控MCU芯片,很好地满足了双轮电动车在户外工作中的高温宽、高耐潮的工作环境,以及PWM、ADC等高

《DevOps实践指南》- 读书笔记(八)

DevOps实践指南Part6集成信息安全、变更管理和合规性的技术实践22.将信息安全融入每个人的日常工作22.1将安全集成到开发迭代的演示中22.2将安全集成到缺陷跟踪和事后分析会议中22.3将预防性安全控制集成到共享源代码库及共享服务中22.4将安全集成到部署流水线中22.5保证应用程序的安全性22.6确保软件供应

热文推荐