hbase 面试题

news/2025/9/22 17:00:57/文章来源:https://www.cnblogs.com/jiangweiwang/p/19105247

单行的强一致性的实现方式

  1. HBase 的操作粒度是 行(RowKey),一行的数据一定存放在同一个 RegionServer 上。
  2. 写入时先写 WAL 再写 MemStore,保证数据的持久性和一致性。
  3. 行级操作(Put/Delete/CheckAndPut/Increment)都是 原子性的。
  4. 内部通过 行锁(Row Lock) 避免并发冲突,从而实现单行的强一致性。

HBase 和 HDFS 的关系是什么?

可以这样理解:HBase 是建在 HDFS 之上的数据库,HDFS 是 HBase 的存储基础。

  1. HDFS 提供分布式存储能力

    • 把大文件切分成块(默认 128MB/256MB),分布在多个节点上,具备容错和高可用。
    • 只支持 顺序读写、批处理,不支持随机读写。
  2. HBase 基于 HDFS 实现数据库功能

    • 把表数据存储为 HFile 文件放在 HDFS 上。
    • 借助 HDFS 的分布式能力,实现水平扩展和海量数据存储。
    • 在 HDFS 的顺序读写之上,HBase 提供了 随机、实时读写
  3. 写入流程依赖 HDFS

    • 数据先写 WAL(预写日志,存放在 HDFS),再写内存 MemStore
    • MemStore 刷写成 HFile,落盘到 HDFS,最终形成持久化存储。
  4. 容错与恢复

    • HBase 不自己实现副本机制,而是依赖 HDFS 的副本机制(默认 3 副本)。
    • 一旦 RegionServer 崩溃,可以从 HDFS 上的 WAL 和 HFile 恢复数据。

🔑 典型适用场景

  1. 海量数据存储

    • 适合存储 TB~PB 级别的结构化或半结构化数据。
    • 例如:电信行业的通话记录(CDR)、用户行为日志、广告点击流。
  2. 时序数据 / 监控数据

    • RowKey 可设计为 时间戳+业务ID,支持按时间顺序快速写入与查询。
    • 例如:物联网传感器数据、金融行情、应用监控指标(如 Prometheus 的长期存储)。
  3. 用户画像与推荐系统

    • 存储大规模用户特征、行为数据,结合推荐算法进行实时查询。
    • 例如:电商的商品点击/购买历史、视频平台的观影行为。
  4. 消息和日志存储

    • 写多读少,要求写入高吞吐、持久化和按需检索。
    • 例如:系统日志、访问日志、运维监控日志。
  5. 大数据平台底层存储

    • Hadoop、Spark、Hive、Phoenix 集成,作为大数据分析和实时查询的存储引擎。
    • 例如:实时+离线混合的数仓架构。

hbase 不适用场景

  • 强事务需求(如银行转账、电商订单支付) → 更适合用关系型数据库。
  • 复杂 SQL 关联查询 → HBase 本身不支持 JOIN,需借助 Hive/Phoenix。
  • 小规模数据场景 → 用 MySQL、PostgreSQL 更简单。

一句话总结
HBase 适合 大数据量、高并发、实时读写 的场景,常用于 日志、时序数据、用户画像、IoT、推荐系统 等,而不适合 强事务、复杂关系查询 的传统 OLTP 业务。

好问题 👌,我来分步骤解释一下 HBase 的数据存储在 HDFS 上的过程和组织结构


hbase 是如何存储在hdfs 上的

🔑 1. 存储单元划分

  • 表(Table):用户逻辑上的数据表。

  • Region:表按 RowKey 范围水平切分为多个 Region,每个 Region 存放在一个 RegionServer 上。

  • Store:一个 Region 按列族(Column Family)再划分为多个 Store。

  • HFile:每个 Store 最终存储为多个 HFile 文件,保存在 HDFS 上。

👉 层级关系
Table → Region → Store(列族) → HFile


🔑 2. 写入流程

  1. 写 WAL(HLog,存在 HDFS 上)

    • 先把写请求记录到预写日志,保证宕机时可恢复。
  2. 写入 MemStore(内存)

    • 数据写到内存的 MemStore 中。
  3. Flush 成 HFile(HDFS)

    • 当 MemStore 达到阈值,会被刷写(flush)成一个 不可变的 HFile 存放到 HDFS。

🔑 3. HFile 文件组织

  • 底层存储格式:HFile(类似 SSTable)

  • 内容

    • Data Block:存放实际的 KeyValue(RowKey + ColumnFamily + Qualifier + Timestamp + Value)
    • Index Block:加速查找
    • Meta Block:存放元数据
    • Trailer:存放文件整体信息

🔑 4. Compaction(合并机制)

  • 随着不断写入,Region 下会产生很多小的 HFile。

  • HBase 会自动执行 Compaction(合并)

    • Minor Compaction:合并小文件 → 减少文件数量
    • Major Compaction:合并所有文件,清理过期数据、删除标记

🔑 5. HDFS 的角色

  • 数据存储:所有 WAL、HFile 文件最终存放在 HDFS 上。
  • 容错机制:HDFS 提供多副本存储(默认 3 副本),保证数据安全。
  • 分布式能力:数据分布在不同 DataNode 上,支持水平扩展。

一句话总结
HBase 把表切分成 Region,Region 按列族存为多个 Store,每个 Store 最终由多个 HFile 文件保存在 HDFS,写入时先经过 WAL+MemStore,再刷写到 HDFS,依赖 HDFS 的副本和分布式存储实现可靠性和扩展性。


HBase 的写放大和读放大是什么意思?

🔑 1. 写放大(Write Amplification)

  • 定义:一次用户写入操作,最终会导致 多次磁盘写入

  • 原因

    1. 写入时,数据先写 WAL(HDFS 上),再写 MemStore(内存)
    2. 当 MemStore 满了,会 Flush 成 HFile,落盘到 HDFS。
    3. 随着 HFile 越来越多,系统会执行 Compaction(文件合并),把多个小文件合并成大文件。
  • 结果
    一条数据可能被写到磁盘 多次(Flush + 多轮 Compaction)。

  • 影响

    • 增加了磁盘 IO 和存储压力。
    • 但换来的是高写入吞吐量和有序存储。

🔑 2. 读放大(Read Amplification)

  • 定义:一次用户读请求,可能需要访问 多个文件/存储位置 才能得到结果。

  • 原因

    1. 数据可能分布在 MemStore(内存)、多个 HFile(磁盘)、BlockCache(缓存) 中。
    2. 由于 HFile 按时间生成,最新数据可能在 MemStore,老数据在多个 HFile 中。
    3. 读操作需要同时查多个存储位置,并合并结果。
  • 结果
    一次查询可能触发 多次 IO,增加查询延迟。

  • 优化方式

    • 利用 BlockCache 缓存热点数据。
    • 通过 Compaction 合并文件,减少 HFile 数量。

一句话总结

  • 写放大:写一次数据,实际落盘多次(WAL、Flush、Compaction)。
  • 读放大:读一次数据,可能查多个文件(MemStore + 多个 HFile + BlockCache)。

HBase 的数据删除流程是怎样的?

好问题 👍,HBase 的 删除并不是立刻物理删除,而是一个带有延迟清理的流程。


🔑 HBase 删除流程(Delete 操作)

1. 写入 Delete 标记(Tombstone)

  • 当执行 Delete 操作时,HBase 不会立刻删除数据
  • 它会写入一个特殊的 Tombstone 标记,表示某个单元格(Cell)或某行数据在逻辑上已被删除。
  • Tombstone 也会像普通数据一样,先写入 WAL,再进入 MemStore,最后刷成 HFile。

2. 读取时的删除生效

  • 当客户端读取数据时,RegionServer 会检查是否存在 Tombstone。
  • 如果 Tombstone 覆盖了目标数据,则该数据不会返回给客户端(对外表现为已删除)。

3. Compaction 时物理删除

  • Tombstone 本身和被删除的数据,依然存放在 HFile 中。
  • 只有在 Major Compaction(主要合并)时,系统会真正把被 Tombstone 标记覆盖的数据清理掉,并删除对应的 Tombstone。
  • 因此,真正的物理删除是 延迟发生 的。

4. 删除粒度

  • HBase 支持多种级别的删除:

    • Delete Row:删除整行数据(所有列、所有版本)。
    • Delete Column Family:删除某一列族的所有数据。
    • Delete Column:删除某一列的所有版本。
    • Delete Version:删除某一列的指定版本(时间戳)。

一句话总结

HBase 删除流程是:
先写入 Tombstone(逻辑删除) → 读时过滤掉数据 → Major Compaction 时真正物理清理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纯jsp做的留言板网站展厅设计策划方案

PACS(Picture Archiving and Communication System)系统作为医学图像的存储和传输平台,为医生和患者提供了便捷高效的诊疗服务支持。近年来,三维重建技术在PACS系统中的应用越来越广泛。 三维后处理功能是临床数字技术中的重要组成…

ANSYS Electronics 2025 R1 安装与使用全流程图文教程

软件介绍 ANSYS Electronics 2025 R1是ANSYS公司推出的电磁场仿真软件,专注于电子设计与分析领域。该版本集成了HFSS的RLC端口阻抗定义、梯度表面粗糙度模型及高阶元素支持,显著提升了电子组件和天线阵列的性能。同时…

h5制作成品衡阳seo优化服务

2021年和2022年,曾经有一个概念在整个数据开发方向传播,不管是懂和不懂的人,都能扯上一两句。那就是大家耳熟能详的「流批一体」。 时至今日,已经很少有人再提起这个话题,这个概念在21、22年很多面试中也会被面试官问到…

网站建设模板源码网站建设课程设计实训报告

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、作用域是什么?二、作用域类别1.全局作用域(global scope)2.名字空间作用域(namespace scope)3.局…

云南网站建设公司前十名招聘seo网站推广

【通览一百个大模型】Baize(UCSD) 作者:王嘉宁,本文章内容为原创,仓库链接:https://github.com/wjn1996/LLMs-NLP-Algo 订阅专栏【大模型&NLP&算法】可获得博主多年积累的全部NLP、大模型和算法干货…

北京备案网站软件开发工具名词解释

1. 安装 JWT 相关的包 运行下面两个命令,安装如下两个 JWT 相关的包 npm i jsonwebtoken express-jwt jsonwebtoken 用于生成 JWT 字符串 express-jwt 用于将 JWT 字符串解析还原成 JSON 对象 2. 导入 JWT 相关的包 // 导入 const jwt require(jsonwebtoken) con…

做网站策划需要用什么软件制作介绍的网站

展开全部子网掩码为代表的copy意思是代表有2113254个可用IP。总IP数为16,包括一个5261网络地址,一个广播4102地址和1653254个可用地址。子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是…

可以做两个网站指向同一个域名成功案例展示网站

在.NET8 中引入了KeyedService支持,这使得可以支持一对多的依赖注入了。在官方,这个功能叫键化DI服务。 什么是键化DI服务?官方解释是这样的,键化依赖项注入(DI)服务提供了一种适用键来注册和检索DI服务的…

如何做cad的模板下载网站做漫画的网站有哪些

近来,有打算录录课、吹吹牛,于是想升级一下硬件。既然要录音,那搞个好一点儿的麦克风总是必要的。于是,上网去查。不查不知道,一查吓一跳。为啥呢?既不为产品的琳琅满目,也不为价格的云泥之别&a…

mall项目学习笔记

springdoc-openapi 替换 Swagger2 总结为什么要替换为 springdoc-openapiSpringfox/Swagger2 已停止维护 无法适配 Spring Boot 新版本,存在安全和兼容性隐患。与 Spring Boot 2.6+ 兼容性差 经常出现启动报错、NPE 等…

实用指南:通义DeepResearch论文六连发全面解读

实用指南:通义DeepResearch论文六连发全面解读pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

glTF/glb:现在和未来

glTF™ 已经超越了其作为独立 3D 格式的起源。它现在被采用为 ISO 国际标准,并已成为快速扩展的软件工具、标准和扩展生态系统的核心。 鉴于 glTF 在实现跨不同平台、设备和 Web 的 3D 体验方面的核心作用,glTF 生态…

用自己网站域名这么做邮箱seo优化关键词分类

文章目录 跳动的爱心环境需求完整代码详细分析系列文章 跳动的爱心 环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这…

做网站好公司wordpress的后台链接

题目: 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 示例: 示例 1: 输入:nums [-1…

如何建立一个网站的快捷方式百度商桥在网站

网络层处理发生在RS485总线上的设备之间的实际通信。由于RS485接口主要是一种电气规范,因此对话可以到此结束,但由于它支持多点,因此需要在 OSI 模型中解决它。 没有针对网络层寻址的固定规范,但RS485总线必须由主机正确管理以避…

网站架构设计师待遇怎么样设计公司装修

一、Django模板引擎 一个强大的工具,用于在HTML页面中嵌入动态内容。它使用一种被称为Django模板语言(Django Template Language)的简单而强大的语法来处理模板。该模板语言使用”{% %}”进行标记,用于执行各种操作。 二、Django…

重庆住房和城乡建设部网站的打印准考证wordpress源神

网络层功能概述 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。 1、路由选择与分组转发 2、异构网络互联 3、拥塞控制 数据交换方式 电路交换 在进行数据传输时,两个结点之间必须先建立一条专用…

网站建设好卖吗网站设计要注意事项

Canvas-图片旋转 众所周知canvas是位图,你可以在里面渲染你要的东西,不过你只能操作canvas的属性来进行编辑。就是说你并不能操作画进canvas的东西,例如我在canvas里添加一幅画,我现在想将那幅画移动10px,我们并不能直…

个人网站的首页网站还没有建好可以备案吗

一、项目介绍 项目总结 1.按下空格键小鸟上升,不按小鸟下落 2.搭建小鸟需要穿过的管道 3.管道自动左移和创建 4.小鸟撞到管道游戏结束 知识储备 1.C语言 2.数据结构-链表 3.Ncurses库 4.信号机制 二、Ncurses库介绍 Ncurses是最早的System V Release 4.0 (SVr4)中…

网站建设制作公司哪家网站底部版权怎么做

基本概念及统计原理 基本概念 指数平滑法的思想来源于对移动平均预测法的改进。指数平滑法的思想是以无穷大为宽度,各历史值的权重随时间的推移呈指数衰减,这样就解决了移动平均的两个难题。 统计原理 简单模型 Holt线性趋势模型 案例 为了研究上海市…