1. 首页
  2. 大数据
  3. 其他

Hbase 中的 memstore 是用来做什么的?



hbase 为了保证随机读取的性能,所以 hfile 里面的 rowkey 是有序的。当客户端的请求在到达 regionserver 之后,为了保证写入 rowkey 的有序性, 所以不能将数据立刻写入到 hfile 中,而是将每个变更操作保存在内存中,也就是memstore 中。memstore 能够很方便的支持操作的随机插入, 并保证所有的操作在内存中是有序的。当 memstore 达到一定的量之后,会将 memstore里面的数据 flush 到 hfile 中,这样能充分利用 hadoop 写入大文件的性能优势, 提高写入性能。

由于 memstore 是存放在内存中,如果 regionserver 因为某种原因死了,会导致内存中数据丢失。所有为了保证数据不丢失, hbase 将更新操作在写入memstore 之前会写入到一个 write ahead log(WAL)中。WAL 文件是追加、顺序写入的,WAL 每个 regionserver 只有一个, 同一个 regionserver 上所有 region 写入同一个的 WAL 文件。这样当某个 regionserver 失败时,可以通过 WAL 文件,将所有的操作顺序重新加载到 memstore 中

发布者:admin,如若转载,请注明出处:https://ai1024.vip/38788.html

QR code
//