面试题答案
一键面试HBase在RegionServer故障后故障恢复基本流程
- Master检测到故障:Zookeeper会检测到RegionServer与它的会话失效,然后通知Master,Master标记该RegionServer为宕机状态。
- 处理遗留的WAL日志:
- RegionServer故障时,一些还未来得及刷写到HFile的数据可能还在预写式日志(WAL)中。Master会将该RegionServer上的WAL日志进行拆分,每个Region对应一个或多个WAL片段。
- 拆分后的WAL片段会被分配到其他正常的RegionServer上进行重放。这些RegionServer会根据WAL日志中的记录,将未持久化的数据重新写入到MemStore中,然后再刷写到HFile。
- 重新分配Region:Master会将故障RegionServer上承载的Region重新分配到其他可用的RegionServer上。它会根据集群的负载情况、Region的大小等因素选择合适的RegionServer。
- Region恢复:新的RegionServer加载分配给自己的Region,并从HDFS加载相应的HFile数据到MemStore,然后开始提供服务。
对系统性能产生较大影响的步骤及原因
- WAL日志重放:
- 原因:重放WAL日志需要读取大量的日志数据,并根据日志记录重新构建MemStore中的数据。这涉及到大量的磁盘I/O操作,因为需要从HDFS读取WAL日志文件。同时,在重放过程中,需要对日志中的操作进行解析和执行,这会占用CPU资源。如果WAL日志文件较大,重放时间会很长,从而对系统性能产生较大影响。
- Region重新分配:
- 原因:Master在重新分配Region时,需要考虑集群的整体负载情况等多种因素来选择合适的RegionServer。这个决策过程本身需要一定的计算资源。并且,将Region从故障节点迁移到新节点,需要在网络上传输Region相关的元数据和部分数据文件,这会占用网络带宽。新的RegionServer在加载Region时,可能还需要从HDFS加载大量数据文件到本地,这又会带来额外的磁盘I/O和网络开销,从而影响系统性能。