面试题答案
一键面试1. Flush 参数调整策略及原理
- 调整策略:
- 适当降低
hbase.regionserver.global.memstore.upperLimit
参数值,例如从默认的 0.4 降低到 0.3 。这会使得 MemStore 在占用堆内存达到 30% 时就触发 Flush 操作。 - 同时,适当增加
hbase.regionserver.global.memstore.lowerLimit
参数值,比如从默认的 0.35 提高到 0.32 。这样可以确保 MemStore 在 Flush 后,尽快开始新的写入,当 MemStore 占用堆内存达到 32% 时就可以继续写入数据。
- 适当降低
- 原理:降低
upperLimit
能让 MemStore 更频繁地将数据 Flush 到磁盘,减少 RegionServer 故障恢复时 MemStore 中的数据量,从而加快恢复过程。增加lowerLimit
则能在保证一定写入性能的前提下,快速恢复正常的写入流程,减少对整体集群性能的影响。
2. Compaction 参数调整策略及原理
- 调整策略:
- 增大
hbase.hstore.compaction.min
参数值,比如从默认的 3 增加到 5 。这意味着在进行 Minor Compaction 时,最少需要合并 5 个 HFile 。 - 减小
hbase.hstore.compaction.max
参数值,例如从默认的 10 降低到 8 。限制一次 Major Compaction 最多合并 8 个 HFile 。 - 适当提高
hbase.hstore.compaction.ratio
参数值,比如从默认的 1.2 提高到 1.5 。这会使 Minor Compaction 在 HFile 大小比例达到 1.5 倍时更容易触发。
- 增大
- 原理:增大
min
值能减少 Minor Compaction 的频率,因为每次 Minor Compaction 操作需要消耗一定的资源,减少频率有助于 RegionServer 在故障恢复时将更多资源用于处理其他关键任务。减小max
值可降低 Major Compaction 的资源消耗,避免在恢复过程中因过于庞大的合并操作而影响性能。提高ratio
值能更合理地触发 Minor Compaction ,及时清理小文件,优化存储布局,从而提高恢复后的读写性能。
3. 其他相关参数调整策略及原理
- 调整策略:
- 增大
hbase.regionserver.handler.count
参数值,比如从默认的 30 增加到 50 。这会增加 RegionServer 处理请求的线程数。
- 增大
- 原理:在故障恢复过程中,会有大量的数据读写请求,增加处理线程数可以提高 RegionServer 处理请求的能力,加快数据的恢复和处理速度,从而优化整体恢复性能。