面试题答案
一键面试关键组件
- Zookeeper:维护HBase集群的元数据信息,包括Region Server的状态、ROOT表的位置等。Client首先通过Zookeeper获取ROOT表的位置,ROOT表记录了META表的Region位置。
- ROOT表:是一个特殊的HBase表,它记录了META表的所有Region位置信息。
- META表:记录了用户数据的所有Region位置信息。每个META表的行记录了一个Region的元数据,包括Region的起始和结束键、所在的Region Server等。
- Region Server:负责存储和管理实际的用户数据Region。每个Region Server管理多个Region。
流程
- Client获取ROOT表位置:Client启动时,会从Zookeeper获取ROOT表的位置信息。Zookeeper存储了ROOT表Region的位置,这使得Client知道从哪里开始查找数据的位置。
- 查找META表位置:Client通过ROOT表,定位到META表的Region位置。ROOT表中包含了META表Region的元数据,如起始和结束键以及对应的Region Server地址。
- 查找用户数据Region位置:Client根据要读取数据的行键,在META表中查找对应的Region位置。META表按行键范围划分Region,Client通过比较行键,找到包含目标行键的META表Region,从而得知用户数据Region所在的Region Server。
- 与Region Server交互:Client直接与目标Region Server进行通信,发起读取请求。Region Server接收到请求后,根据行键在其管理的Region中定位具体的数据。如果数据是按列族存储,Region Server还会根据列族信息进一步定位到具体的存储文件(HFile)。在HFile中,通过内部的索引结构(如Bloom Filter、Block Index等)快速定位到包含目标数据的块(Block),最终返回数据给Client。