面试题答案
一键面试Client
- 职责:
- 发起写入请求:接收应用程序的写入数据请求,根据数据的行键,通过元数据信息(.META.表等)定位数据应该写入的Region所在的RegionServer。
- 缓存与重试:在写入过程中,Client会对一些元数据进行缓存,以减少重复查询元数据的开销。如果写入请求失败,Client会根据一定的重试策略进行重试。
RegionServer
- 职责:
- 接收请求:接收Client发送过来的写入请求,并将数据首先写入到MemStore中。MemStore是一个内存中的数据结构,按照行键有序存储数据,数据以KeyValue对的形式存在。
- WAL预写:在将数据写入MemStore之前,RegionServer会先将数据写入到Write - Ahead Log(WAL)中。WAL的作用是在RegionServer发生故障后,能够通过重放WAL日志来恢复未持久化到磁盘的数据,保证数据的一致性和可靠性。
- MemStore管理:当MemStore达到一定的阈值(如配置的大小阈值)时,RegionServer会将MemStore中的数据Flush到磁盘,生成HFile文件。这个过程会对数据进行排序等操作,以保证HFile文件内数据的有序性。
- Region管理:负责管理分配给自己的Region,包括维护Region的状态,处理Region的分裂等操作。当一个Region的HFile文件大小达到一定阈值时,RegionServer会对该Region进行分裂,将数据分布到新的Region上,以提高读写性能和负载均衡。
HMaster
- 职责:
- 负载均衡:虽然不直接参与单个写入操作,但HMaster负责监控所有RegionServer的负载情况,当某个RegionServer负载过高时,HMaster会通过迁移Region等方式将负载均衡到其他RegionServer上,间接保障写入流程的顺畅。
- 元数据管理:维护HBase的元数据,如.META.表等,用于Client定位Region所在的RegionServer。在RegionServer启动、停止或者Region发生变化时,HMaster负责更新这些元数据信息,确保写入流程能够准确地找到目标Region。