はじめに

HBase は Hadoop メトリクスを発行します。

使い方

まず、Hadoop メトリクスに関する説明を読んでください。Ganglia を使っている場合は、wiki の「GangliaMetrics」のページが役立ちます。

HBase にメトリクスを発行させるには、$HBASE_HOME/conf/hadoop-metrics.properties を編集し、プラグインごとにメトリクスの「コンテキスト」を有効にします。このページの執筆時点では、Hadoop は file プラグインと ganglia プラグインをサポートしています。なお、HBase のメトリクスファイルの名前は hbase-metrics ではなく、hadoop-metrics となっていますが、これは少なくとも現時点では、Hadoop メトリクスシステムにおいてプロパティファイル名がハードコードされているためです。メトリクスの context ごとに、NullContext をコメントアウトし、代わりに 1 つ以上のプラグインを有効にしてください。

hbase コンテキストを有効にすると、リージョンサーバー上では前回のメトリクス発行以降の総リクエスト、リージョンとストアファイルのカウント、および MemStore サイズのカウントが表示されます。Master では、クラスタのリクエストのカウントが表示されます。

HBase の RPC メソッドの呼び出しに関するメトリクス (カウントおよび要した時間) を知りたい場合は、rpc コンテキストを有効にします。

HBase jvm の実行に関する長期的な統計情報 (メモリ使用量、スレッドカウントなど) を知りたい場合は、jvm コンテキストが適しています。このページの執筆時点においては、メトリクスを発行する jvm が複数実行中である場合、少なくとも Ganglia では、統計情報はインスタンスごとに報告されるのではなく、集約して報告されます。

JMX で使う

Hadoop メトリクスパッケージがサポートしている標準の出力コンテキストのほかに、Java Management Extensions (JMX) を介して HBase のメトリクスをエクスポートすることもできます。この方法を使うと、JConsole やその他の任意の JMX クライアントで HBase の統計情報を見ることができます。

HBase の統計情報の収集を有効にする

HBase で JMX のサポートを有効にするには、まず $HBASE_HOME/conf/hadoop-metrics.properties を編集して、メトリクスの更新をサポートするようにします。(すでにほかの出力コンテキスト用に hadoop-metrics.properties の設定を済ませている場合、この手順は省略可能です。)


# Configuration of the "hbase" context for null
hbase.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
hbase.period=60

# Configuration of the "jvm" context for null
jvm.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
jvm.period=60

# Configuration of the "rpc" context for null
rpc.class=org.apache.hadoop.metrics.spi.NullContextWithUpdateThread
rpc.period=60
      
      

JMX リモートアクセスのセットアップ

リモートアクセスを行う場合は、JMX のリモートパスワードとアクセスプロファイルの設定が必要になります。以下のファイルを作成してください。

$HBASE_HOME/conf/jmxremote.passwd (パーミッションは 600 にします)

monitorRole monitorpass
controlRole controlpass
        
        
$HBASE_HOME/conf/jmxremote.access

monitorRole readonly
controlRole readwrite
        
        

HBase 起動時の JMX の設定

最後に、$HBASE_HOME/conf/hbase-env.sh スクリプトを編集して、JMX のサポートを追加します。

$HBASE_HOME/conf/hbase-env.sh
以下の行を追加してください。

HBASE_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false"
HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.password.file=$HBASE_HOME/conf/jmxremote.passwd"
HBASE_JMX_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.access.file=$HBASE_HOME/conf/jmxremote.access"

export HBASE_MASTER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10101"
export HBASE_REGIONSERVER_OPTS="$HBASE_JMX_OPTS -Dcom.sun.management.jmxremote.port=10102"
        
        

監視対象のプロセスを再起動すれば、JConsole (JDK 5.0 以降では JDK に含まれています) を実行して JMX 経由で統計情報を表示できるようになっているはずです。HBase MBeans は、JMX の hadoop ドメインの下にエクスポートされています。