惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
雷峰网
雷峰网
IT之家
IT之家
I
InfoQ
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
A
About on SuperTechFans
月光博客
月光博客
P
Proofpoint News Feed
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
G
Google Developers Blog
小众软件
小众软件
宝玉的分享
宝玉的分享
Jina AI
Jina AI
V
Visual Studio Blog

博客园 - 姜伟华

我常用的软件列表 How can I handle a destructor that fails 让windows explorer总是打开文件夹视图的方法 转一个windows "无法停止‘通用卷’设备"的解决方法 终于看到外界宣传我们的产品 Intel XML Software Suite了。 将PDF文件放大缩小 一篇非常不错的探讨pure virtual function call错误的文章。 D-LINK DI-524无线路由器变身DI-624,解决BT断线问题 Emacs在FreeNX下不工作 gdb中如何使用shell环境变量 我的GVIM配置 开始写XML Code了 终于毕业了 放弃office,拥抱latex 终于选定了编辑器了 郁闷的夏天 Jikes RVM中 Java 循环的识别 在PearPC上安装Mandrake 9.1 for PPC的经历 今天复旦软院的第一届学生就要毕业了
HBase的内存使用
姜伟华 · 2011-06-24 · via 博客园 - 姜伟华

HBase region server作为一个Java程序,启动时应该指定max heap size,比方说8G。那这8G会被如何使用呢?

1. 作为每个region的mem store,缺省是64M。那么如果这个region server一共有100个region的话,就要用掉64M*100=6.4G内存了。

2. 作为block cache用,缺省是20%的内存用作block cache,那么就是8G*20% = 1.6G。

3. 其他对象分配。

从上面的情况可以看到,如果这个region server只有8G的heap size的话,在100个region的情况下,内存已经完全用完了(6.4G+1.6G),这样的话,就非常容易出OutOfMemoryError了。当然在实际使用中,基本不会因为这个原因产生OOME。这主要是因为HBase的这个配置hbase.regionserver.global.memstore.upperLimit(缺省是40%的内存)起了作用。但这是有代价的。其代价就是block住所有在这个region server上的update操作并强制进行flush以释放内存。这样的话,整个region server在这段时间内就不响应任何请求。所以,应该限制每个HBase region server的region个数。按照Google的经验,这个数字应该不超过100。

读HBase的source code可以发现,对于put heavy的应用来说,mem store flush只发生在mem store满的情况。而由flush又进一步引起minor compaction, major compaction和split。所以为了减少flush次数,似乎应该增大mem store size并相应减少region个数。这样应该会对写入速度有好处。回头实验下吧。