HBase写数据的异常问题以及优化

HBase写数据的异常问题以及优化,第1张

Lars
Hofhansl 在 HBASE-5268 提出一个"prefix
delete marker"的建议,大概的思想是

如果数据如下:

row column family:qualifier value

r1 cf1:101 XX

r1 cf1:102 XX

r1 cf1:103 XX
r1 cf1:201 XX

r1 cf1:202 XX

如果我们想删除qualifier 101~103的数据,那么在当前hbase中只能一个接一个删除,即打入三个delete
marker。Lars想引入一个前缀删除机制,即删除某个family下面所有以XX开头的qualifier,这样有一个比较明显的好处就是只需要加一次delete
marker,在一些inner row很多的schema下,要进行range
delete时,这样节省的开销还是很大的。然而这个fix和get的一些逻辑有一定的冲突,后来并未引入到新版本中,Lars也写了一篇博客解释了原因。结合这篇博客和 >当你 *** 作一行数据的时候,这个regionserver 会对这个行进行暂时锁定,来进行 *** 作,

从好的方面看,我们可以并发的进行原子读 *** 作,或者压根不能修改 *** 作。除非可以可以容忍误差(部分更新,数据时效不敏感)

在弊的方面看,这意味着单个行内的吞吐量的写入 *** 作被限制(可能几百每秒)。

对一个row进行 *** 作的负载均衡和分布式单位都在一个region上,所以这个region到底有多忙,他也只会通过这台机器提供服务。如果是多行那么就可以做多台服务进行一个负载均衡。

在一些早起版本有些bug,他会突然加载反序列化整行数据到内存中,所以行column非常多(100MB)的话就会导致OOM, 这些bug可能已经解决了吧?regionserver也会更聪明的选择需要的column进行加载。

这个是需要明确的。

如果你不需要做原子 *** 作,那么可能最好的方式是设计一个高表模型来实现的逻辑


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13397064.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-28
下一篇 2023-07-28

发表评论

登录后才能评论

评论列表(0条)

保存