Hbase Flush


Hbase Flush

概念:

stripe compaction

矛盾:

  1. 吞吐量达->region多->store多->memstore多->flush多->compact多->影响读写
  2. 某rowkey范围大量put,但要整个store做major compact.
  3. split代价大

解决:

level:

  1. 分level0,level1:临时mem flush,bulkload文件,stripe文件
  2. level0-1上升合并。
  3. 容错有level1回退level0重新compaction
  4. 算法leve0-n:1.同一层rowkey不重2.边合并边删除:lru落leve低,分层合并不是所有的合并。
  5. compaction风暴层数要少

level1-stripe:

  1. region下按rowkey划分stripe
  2. 划分规则:大小自动切,miniregions个数
  3. get扫面更聚集到level1上
  4. scan stripe排序?//snapshot不就已经排序了吗?
  5. 提升split,直接定位拷贝

  1. Yali
  2. jiekout jieou
  3. chengdu drquery git branch –r
  4. 返回数据索引
  5. 分页

  1. flush 刷region级的,
  2. 排序:region内memstore
  3. bestflushableregion选region:store的hbase.hstore.blockingStoreFiles不到,memstore最多的region:. 不到且最多
  4. bestanyregion maxMemstore
  5. 3超2两倍的话,有compaction也选这个reigon,3,否则选2
  6. region一个 mvcc,读写并发,需要写memstore
  7. flush阻塞row更新锁,snapshot->memstore.
  8. 而mvcc写的是memstore, mvcc读版本到当前写版本
  9. mvcc对memstore的updatelock读锁释放,flush要等待mvcc写锁释放,等待目前的写版本号
大山 /
Published under (CC) BY-NC-SA in categories   tagged with