最常见的 HBase 面试问题和答案 [终极指南]
已发表: 2020-09-21当您希望应用程序实时推送或拉取数据时,Apache HBase 是一个出色的大数据解决方案。 它主要以其灵活的模式和高速而闻名。 本文旨在为您解答一些热门的HBase 面试问题。 面试官想要测试候选人的技术和一般意识。 因此,您的努力应该是准确而彻底地传达这些概念。
许多领先的公司在世界各地使用 Hbase 技术,包括 Adobe、HubSpot、Facebook、Twitter、Yahoo!、OpenLogic 和 StumbleUpon。 对于希望构建可扩展网站的有抱负的 Web 开发人员来说,掌握 Hadoop 和 HBase 等工具可能非常有用。
从世界顶尖大学学习数据科学。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
阅读: Hadoop 项目理念
目录
顶级 HBase 面试问题和答案
1.什么是HBase?
它是由 Apache 软件基金会开发的面向列的数据库。 HBase 运行在 Hadoop 集群之上,用于存储半结构化和非结构化数据。 因此,它没有像传统关系数据库那样的死板模式。 此外,它不支持 SQL 语法结构。 HBase 通过管理集群和区域服务器的主节点存储和操作数据。
2、使用Hbase的原因有哪些?
HBase 提供大容量存储系统和随机读写操作。 它可以处理大型数据集,每秒执行多个操作。 分布式和水平可扩展的设计使 HBase 成为实时应用程序的流行选择。
3.解释HBase的关键组件。
HBase 的工作部分包括 Zookeeper、HBase Master、RegionServer、Region 和 Catalog Tables。 每个元素的用途可以描述如下:
- 客户端和 HBase Master 之间的 Zookeeper 协调
- HBase Master 监控 RegionServer 并负责管理功能
- RegionServer 监管 Region
- Region 包含 MemStore 和 HFile
- 目录表包含 ROOT 和 META
基本上,Hbase 由一组表组成,每个表都有行、列和主键。 它是 HBase 列,表示对象的属性。
4. HBase 中有哪些不同类型的操作命令?
HBase 中有五个关键的操作命令:Get、Delete、Put、Increment 和 Scan。
Get 用于读取表格。 通过 HTable.get 执行,它从表中返回特定行的数据或属性。 Delete 从表中删除行,而 Put 添加或更新行。 增量启用对单行的增量操作。 最后,Scan 用于对某些属性的多行进行迭代。
5. 你对 WAL 和 Hlog 的理解是什么?
- WAL 代表 Write Ahead Log,与 MySQL 中的 BIN 日志非常相似。 它记录了数据的所有变化。
- HLog 是 Hadoop 的标准内存序列文件,用于维护 HLogkey 存储。
WAL 和 HLog 充当服务器故障和数据丢失事件的生命线。 如果 RegionServer 崩溃或变得不可用,WAL 文件确保可以重放数据更改。
6. 描述一些你会使用 Hbase 的情况。
在以下情况下适合使用 HBase:
- 您的数据量很大,需要您对数百万条记录进行操作。
- 您正在实施彻底的重新设计并彻底检修传统的 RDBMS。
- 您有资源在集群中进行基础设施投资。
- 有特定的无 SQL 命令,例如事务、类型化列、内部行等。
7. 列族和行键是什么意思?
列族构成了 HBase 中的基本存储单元。 这些是在表创建期间定义的,并一起存储在磁盘上,稍后允许应用压缩等功能。
行键可以对单元格进行逻辑分组。 它以组合键为前缀,让应用程序定义排序顺序。 这样,所有具有相同行键的单元格都可以保存在同一台服务器上。
8. HBase 与关系型数据库有何不同?
HBase 与关系数据库不同,因为它是一种无模式、面向列的数据存储,包含稀疏填充的表。 关系数据库是基于模式的、面向行的,并将规范化的数据存储在精简表中。 此外,HBase 具有自动分区的优势,而 RDBMS 中没有这样的内置支持。

阅读: DBMS 与 RDBMS:DBMS 和 RDBMS 之间的区别
9. HBase 中的 cell 由什么构成?
单元格是 HBase 表的最小单位,以元组的形式保存数据。 元组是具有多个部分的数据结构。 在 HBase 中,它由 {row, column, version} 组成。
10. 在 HBase 中定义压缩。
压缩是在从数据库中删除旧文件之前将 HFile 合并为单个文件的过程。
11、可以不使用HBase直接访问HFile吗?
是的,有一种独特的技术可以在不借助 HBase 的情况下直接访问 HFile。 HFile.main 方法可用于此目的。
12. 讨论 HBase 中的删除和墓碑标记。
在 HBase 中,正常的删除过程会产生一个墓碑标记。 删除的单元格变得不可见,但它们所代表的数据实际上在压缩过程中被删除。 HBase 具有三种类型的墓碑标记:
- 版本删除标记:它标记要删除的列的单个版本
- 列删除标记:它标记列的所有版本
- 族删除标记:设置一个列族的所有列进行删除
这里需要注意的是,HBase 中的一行在major compaction 之后会被完全删除。 因此,当您删除并添加更多数据时,Get 可能会被墓碑标记所掩盖,并且您可能在压缩之后才能看到插入的值。
13. 当你改变列族的块大小时会发生什么?
如果您的数据库已经被占用,并且您希望更改 HBase 中列族的块大小,则旧数据可能会保留在旧块大小中。 在压缩期间,新旧数据的行为如下:
- 现有数据将采用新的块大小并继续正确读取。
- 新文件将具有新的块大小。
这样,在下一次主要压缩之前,所有数据都转换为所需的块大小。
14.定义HBase可以运行的不同模式。
HBase 可以在独立模式或分布式模式下运行。 Standalone 是 HBase 的默认模式,它使用本地文件系统而不是 HDFS。 至于分布式模式,又可以进一步细分为:
- 伪分布式模式:所有守护进程运行在单个节点上
- 全分布式模式:守护进程跨集群中的所有节点运行
15. 你将如何在 HBase 中实现连接?
HBase 使用 MapReduce 作业以可扩展的方式处理数 TB 的数据。 它不直接支持连接,但连接查询是通过从 HBase 表中检索数据来实现的。
结帐: Hadoop 面试问题
16. 讨论 HBase 中过滤器的用途。
在 Apache HBase 0.92 中引入了过滤器,以帮助用户通过 Shell 或 Thrift 访问 HBase。 因此,它们会满足您的服务器端过滤需求。 还有装饰过滤器,它们扩展了过滤器的使用,以获得对返回数据的额外控制。 以下是 HBase 中过滤器的一些示例:
- Bloom Filter:通常用于实时查询,它是一种节省空间的方式来了解 HFile 是否包含特定的行或单元格
- 页面过滤器:接受页面大小作为参数,页面过滤器可以优化单个 HRegions 的扫描
17. 将 HBase 与 (i) Cassandra (ii) Hive 进行比较。
(i) HBase 和 Cassandra: Cassandra 和 HBase 都是旨在管理大型数据集的 NoSQL 数据库。 但是, Cassandra 查询语言 (CQL ) 的语法是根据 SQL 建模的。 在这两种数据存储中,行键构成主索引。 Cassandra 可以在列值上创建二级索引。 因此,它可以改善重复级别高的列中的数据访问。 HBase 缺少此规定,但具有其他机制来引入二级索引功能。 这些方法可以在在线参考指南中轻松找到。
(ii) HBase 和 Hive:它们都是基于 Hadoop 的技术。 如上所述,HBase 是一个 NoSQL 键/值数据库。 另一方面,Hive 是一个类似 SQL 的引擎,能够运行复杂的 MapReduce 作业。 您可以执行从 Hive 到 HBase 的读取和写入数据操作,反之亦然。 虽然 Hive 更适合分析任务,但 HBase 是实时查询的绝佳解决方案。
另请阅读: HBase 架构:您需要知道的一切
结论
这些HBase 面试问题和用例将我们带到了本文的结尾。 我们试图涵盖不同的主题,以迎合基础、中级和高级水平。 所以,继续修改,给你的招聘人员留下深刻的印象!
如果您想了解数据科学,请查看 IIIT-B 和 upGrad 的数据科学执行 PG 计划,该计划是为在职专业人士创建的,提供 10 多个案例研究和项目、实用的实践研讨会、与行业专家的指导、1与行业导师一对一,400 多个小时的学习和顶级公司的工作协助。
