HBaseのメモリー使用量の設定方法について

7
Takuo Kihira @tkihira

HBaseがメモリ不足で落ちる。-Xmx1000 -Xms1000にしてるのに、なぜ落ちる?パフォーマンスは後で考えるので、とにかく落ちないように省メモリの設定にしたいんだけど、きっと何か見落としているな #hbase

2010-11-01 08:03:11
Tatsuya Kawano @tatsuya6502

ヒープ不足か、スワップアウトか、どちらが発生しているか切り分けが必要かな。 http://ow.ly/32DIq QT @tkihira: HBaseがメモリ不足で落ちる。-Xmx1000 にしてるのに、なぜ落ちる?とにかく落ちないように省メモリの設定に #hbase

2010-11-02 01:48:55
Takuo Kihira @tkihira

@tatsuya6502 ヒープ不足のようです。4Gしか積んでいないので、DataNodeに750M、TaskTrackerに500M、Mapper・Reducerに200M×2、Balancerに500M、HBaseに1Gという設定ですが、GCがメモリ確保に失敗しています

2010-11-02 17:39:04
Takuo Kihira @tkihira

@tatsuya6502 HBaseがOut of memoryで落ちていたのですが、Hadoopの設定に難があって予想しているよりもメモリを多く確保していることが原因ではないかと現在考えております。今の負荷テストが通れば良いのですが…

2010-11-02 17:55:18
Tatsuya Kawano @tatsuya6502

@tkihira HBase のOut of Memについては、メモリー上に置くデータ量を調整して防げるかもしれません。hbase-default.xml から、hbase-site.xml に次の設定をコピーして、数字を下げてみてください。つづく

2010-11-02 18:10:40
Tatsuya Kawano @tatsuya6502

@tkihira hbase.regionserver.global.memstore.upperLimit, 同 lowerLimit, hfile.block.cache.size 。この3つのパラメータでメモリー消費を調整できるはずです。

2010-11-02 18:14:08
Takuo Kihira @tkihira

@tatsuya6502 貴重な情報ありがとうございました。それらのパラメータはすべてデフォルトのまま使っていたので、次の試験で少し下げて挑戦してみます。ところで、デフォルトの設定でもHBASE_HEAPSIZEよりもメモリが消費されてしまう可能性ってあるのでしょうか?

2010-11-02 18:22:42
Tatsuya Kawano @tatsuya6502

相対値で設定しますので、heapが小さい時はあり得ると思います。ディフォルトでは、ここで設定しているバッファとキャッシュで、heapの60%.. QT @tkihira デフォルトの設定でもHBASE_HEAPSIZEよりもメモリが消費されてしまう可能性ってあるのでしょうか?

2010-11-02 19:00:30
Tatsuya Kawano @tatsuya6502

@tkihira ... 60%を使いますが、クラスのロードしたり、スレッドの動作でheapとstackを消費し、さらにおびただしい数のオブジェクトが作られては、GCで回収されていくわけで、それらが40%(400MB)から溢れてしまう可能性はあると思います。

2010-11-02 19:04:02
Takuo Kihira @tkihira

@tatsuya6502 なるほど、ありがとうございます。(一般論として)本来使う容量の倍近くのメモリを用意しておく必要があるというのは、少し盲点でした。

2010-11-02 20:07:53