HBase面试题及答案(实战导向版).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

HBase面试题及答案(实战导向版)

一、基础概念题

HBase的核心架构组件有哪些?各自作用是什么?

答:主要有三个核心组件:

RegionServer:负责实际的数据读写操作,管理多个Region,处理客户端请求;比如客户端查数据时,直接和RegionServer交互,不用经过HMaster。

HMaster:负责集群管理,比如Region的分配与迁移、元数据(hbase:meta表)维护、权限控制;但它不处理具体数据请求,所以单点故障时集群仍能读数据(写会受影响,需开启HA)。

Zookeeper:协调集群,存储HMaster地址、RegionServer状态(在线/离线)、分布式锁(比如防止多个HMaster同时启动);HBase依赖Zookeeper实现高可用。

RowKey在HBase中的作用是什么?设计时要注意哪些点?

答:RowKey是HBase行的唯一标识,也是数据分片(Region)的依据(按RowKey范围划分Region),查询时只能通过RowKey或RowKey范围扫描,所以设计很关键。

注意点:

避免热点:比如用时间戳当RowKey会导致新数据全写入一个Region(热点Region),实际会用“哈希加盐”(比如RowKey前加2位随机数)或“时间戳反转”(比如1695000000改成0000050961)分散写入。

长度适中:RowKey存在内存和HFile中,太长会浪费资源,一般建议10-100字节,比如用“用户ID+日期”(user123这种短且有意义的组合。

二、进阶原理题

HBase的Region分裂和合并是怎么回事?什么时候会触发?

答:Region是HBase的最小数据分片,分裂是把大Region拆成小Region,合并是把小Region合成大Region,都是为了平衡负载。

分裂触发:默认当Region大小达到10GB(hbase.hregion.max.filesize配置)或StoreFile数量超过阈值(hbase.hstore.blockingStoreFiles)时自动分裂;也可以手动分裂(比如预分区时提前分好,避免自动分裂的瞬间性能波动)。

合并触发:当Region删除数据后变小,或出现大量小Region时,HMaster会触发合并;手动也能触发(用merge_region命令),但要注意合并时会消耗IO,一般选凌晨低峰期操作。

HBase的Compaction操作有什么用?Minor和MajorCompaction的区别是什么?

答:Compaction是把多个小的StoreFile(HBase的实际数据文件)合并成大文件,目的是减少文件数量、删除无效数据(比如被删除的行、过期版本),提升查询效率。

区别:

MinorCompaction:小范围合并,只合并部分StoreFile,不删除tombstone(删除标记)和过期版本,耗时短,默认自动触发(比如当StoreFile数量达3个)。

MajorCompaction:全量合并,合并一个Store下所有StoreFile,会删除tombstone和过期版本,耗时久、耗IO,生产环境一般禁用自动触发,改成每周手动触发1次(避免白天影响业务)。

三、实战问题题

HBase查询变慢,可能有哪些原因?怎么排查和解决?

答:常见原因和处理思路:

热点Region:看RegionServer的监控(比如HBaseUI的RegionServer页面),如果某个Region的请求量远超其他,就是热点。解决:先临时拆分热点Region,后续优化RowKey设计(比如加哈希前缀)。

StoreFile太多:查Region的StoreFile数量,超过10个就可能慢。解决:手动触发MinorCompaction,合并小文件。

缓存配置不合理:HBase有BlockCache(读缓存)和MemStore(写缓存),如果BlockCache太小,频繁读磁盘会慢。解决:调大hfile.block.cache.size(默认0.4,可提到0.5-0.6,注意RegionServer内存不能超配)。

数据倾斜:比如某类RowKey的数据量特别大,导致对应Region过大。解决:提前预分区(比如按用户ID范围分10个Region),分散数据。

HBase和HDFS的关系是什么?HBase为什么依赖HDFS?

答:HBase是构建在

文档评论(0)

151****9429 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档