Kudu的读写原理
一、工作模式
Kudu的工作模式如下图,有些在上面的内容中已经介绍了,这里简单标注一下:
- 每个kudu table按照hash或range分区为多个tablet;
- 每个tablet中包含一个MemRowSet以及多个DiskRowSet;
- 每个DiskRowSet包含BaseData以及DeltaStores;
- DeltaStores由多个DeltaFile和一个DeltaMemStore组成;
- insert请求的新增数据以及对MemRowSet中数据的update操作(新增的数据还没有来得及触发compaction操作再次进行更新操作的新数据)会先进入到MemRowSet;
- 当触发flush条件时将新增数据真正的持久化到磁盘的DiskRowSet内;
- 对老数据的update和delete操作是提交到内存中的DeltaMemStore;
- 当触发flush条件时会将更新和删除操作持久化到磁盘DIskRowSet中的DeltaFile内,此时老数据还在BaseData内(逻辑删除),新数据已在D