数据岗位面试题更新 2026-08-05

请说明在 HBase 中针对大规模数据查询,使用 Scan 操作时有哪些优化手段?

数据性能优化技术选型问题排查Apache HBase

考察说明

考查对 HBase Scan 查询性能优化方法的掌握程度。

回答思路

  1. 【回答框架 1】设置合理的缓存与批量参数:通过 setCaching 增大每次 RPC 获取的行数,减少网络往返;setBatch 控制每行返回的列数,避免单行过大导致内存压力。
  2. 【回答框架 2】使用过滤器下推:利用 FilterList 组合多种过滤器,如行键范围、列族限定、值过滤,在服务端提前过滤数据,减少传输量。
  3. 【回答框架 3】优化行键设计:采用预分区和合适的行键模式,使 Scan 能并行扫描多个 Region,避免热点;使用 startRow 和 stopRow 限定扫描范围。
  4. 【回答框架 4】关闭不必要的特性:若无需实时数据,可设置 setBlockCache 为 false 避免缓存污染;关闭 WAL 或使用 Scan 的 raw 选项时需谨慎,确保数据一致性。
  5. 【回答框架 5】使用反向扫描或指定列族:通过 setReversed 支持反向遍历,减少全表扫描;仅扫描需要的列族,减少 IO 开销。
  6. 【关键点 1】setCaching 和 setBatch 是控制 RPC 次数与内存使用的关键参数。
  7. 【关键点 2】过滤器下推能显著减少网络传输和客户端处理负载。
  8. 【关键点 3】行键设计与预分区直接影响 Scan 的并行度和效率。
  9. 【关键点 4】合理设置 blockCache 和关闭不必要特性可提升扫描性能。
  10. 【易错点 1】过度增大 setCaching 可能导致客户端或 RegionServer 内存溢出。
  11. 【易错点 2】使用过滤器时若未正确组合,可能造成过滤逻辑错误或性能下降。
  12. 【易错点 3】忽略行键设计而盲目使用 Scan 会导致全表扫描,性能极差。