HBase� is the Hadoop database ,当你需要random、realtime read/write 访问你的大表时,特别是有数十亿基本的行和数百万的columns时,HBase比较适用。
下图是经典的架构图:
术语
- HMaster 负责负载均衡
- HRegionServer 一般与dataNode在同一个节点,处理本地数据。
- Region:一张Table的数据放在一个或多个Region中。
- Store(Column Family):一张Table有多个列族,一个列簇对应Region中的一个Store。
- MemStore:每个store都有一个memStore,在数据写入WAL后,写入缓存,达到flush阈值时,会flush到disk。
- StoreFile(HFile):实际存储数据的地方,在HDFS上。
一个流程示例,助攻理解
当客户端发起一个Put请求时,首先它从hbase:meta表中查出该Put数据最终需要去的HRegionServer。然后客户端将Put请求发送给相应的HRegionServer,在HRegionServer中它首先会将该Put操作写入WAL日志文件中(Flush到磁盘中)。
写完WAL日志文件后,HRegionServer根据Put中的TableName和RowKey找到对应的HRegion,并根据Column Family找到对应的HStore,并将Put写入到该HStore的MemStore中。此时写成功,并返回通知客户端。
MemStore是一个In Memory Sorted Buffer,在每个HStore中都有一个MemStore,即它是一个HRegion的一个Column Family对应一个实例。它的排列顺序以RowKey、Column Family、Column的顺序以及Timestamp的倒序。