3

Hbase および Hbase Thrift Server で Cloudera CDH4 を実行しています。1 日に数回、Thrift サーバーがクラッシュします。

/var/log/hbase/hbase-hbase-thrift-myserver.out には、これがあります:

#
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p"
#   Executing /bin/sh -c "kill -9 8151"...

/var/log/hbase/hbase-hbase-thrift-myserver.log では、ファイルの末尾にエラー メッセージはありません。ノードの 1 つが特定のファイルをキャッシュしていることを示す多くの DEBUG メッセージしかありません。

Hbase Thrift サーバーの構成オプションがわかりません。/etc/ には明らかなファイルはありません。/etc/hbase/conf とその Hbase ファイルのみ。

デバッグに関するアイデアはありますか?

4

3 に答える 3

2

/etc/hbase/conf/hbase-env.shを使用して、ヒープサイズを増やしました。これにより、クラッシュの問題が解決されました。

# The maximum amount of heap to use, in MB. Default is 1000.
export HBASE_HEAPSIZE=8000

私が理解するのを手伝ってくれたCDHユーザーメーリングリストのHarshJに感謝します。彼が指摘したように、ログメッセージがないということkill -9は、おそらく次のことが起こっていることを示しています。

実際、シャットダウンハンドラメッセージがログテールのプリクラッシュにない場合は、OOMハンドラを介してプロセスにkill-9が渡された可能性があります。

于 2013-02-13T02:02:26.673 に答える
2

HBase Thrift のセットアップでもまったく同じ問題が発生し、実行されていない場合に Thrift を再起動するウォッチドッグ スクリプトを使用することになりました。

1 日に数回、HBase サーバーに負荷をかけていますか? その結果、これが発生する可能性があります。これを回避する方法はありません。Thrift は、使用されるたびに多くのメモリを占有 (またはリーク) しているように見えるため、ウォッチドッグ スクリプトが必要です。

ウォッチドッグ スクリプトが負荷が高すぎる場合は、単純な cron ジョブを使用して頻繁に Thrift を再起動し、稼働状態を維持することができます。

次の cron は、Thrift を 2 時間ごとに再起動します。

0 */2 * * * hbase-daemon.sh restart thrift
于 2013-02-05T22:21:25.167 に答える
2

ヒープサイズを増やすことが常に解決策になるとは限りません。

このclouderaのブログによると、

Thrift サーバーが無効なデータを受信して​​いる可能性があります。Framed トランスポートとコンパクト プロトコルを有効にすることをお勧めします。

サーバーでこれらのプロトコルを有効にすると、クライアントは同じプロトコルを使用する必要があります。

于 2016-06-08T22:18:35.487 に答える