HBase 存一条大于 memstore 的数据怎么存?

问答 揽月 ⋅ 于 2021-09-22 00:49:51 ⋅ 最后回复由 犀牛 2021-09-22 09:03:35 ⋅ 94 阅读

memstore只有128m,有一条130m的数据怎么存进去?

回复数量: 1
  • 犀牛
    2021-09-22 09:03:35

    这就涉及到底层memstore刷写源码了,通俗的理解,一旦达到刷写阈值就开始刷写,刷写是分为三步来完成的,第一步阻塞写(写的时候是需要持有uodatelock锁的),将已经写满的cellskiplistcell创建一个快照(创建快照的时候将持有updatelock锁,快照创建完成就释放锁),当快照创建完成后再创建一个cellskiplistset继续接收新数据,也就是把一条数据分为两部分了。第二步会将快照写到hbase的.tmp目录下,第三步是commit,将临时目录文件写到对应region的hdfs上。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter