2

Hadoop ジョブの JMX 監視を有効にしたい ( JobTracker、DataNode などではなく、実際のジョブの場合)。jconsoleローカル マシンからジョブが実行されているホスト/クラスター/ノードに接続し、いくつかの監視値を取得できる可能性を探しています。したがって、JMX へのリモート アクセスが必要です。

と にいくつかのオプションを追加しようとしましMAPRED_MAP_TASK_JAVA_OPTSMAPRED_REDUCE_TASK_JAVA_OPTS:

  1. -Dcom.sun.management.jmxremote.authenticate=fals-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Djava.net.preferIPv4Stack=trueを使用して JMX に接続する方法がわからないため、追加 しても役に立ちませんjconsole。ポートが開かれますが、 を使用して接続しようとするとjconsole、「テーブルにそのようなオブジェクトがありません」というエラーが表示されます。

  2. -Dcom.sun.management.jmxremote.authenticate=fals-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote.port=1412hostname:1412期待どおりに動作します: を使用して接続できjconsoleます。ここでの主な問題: マッパー/リデューサーは同じノードで複数回実行される可能性があり、ポートを 2 回使用できないため、2 回目にマッパー/リデューサーを起動すると例外が発生して失敗します。

Hadoop ジョブで JMX を使用できるようにするソリューションはありますか? この質問は、別のレベルで問題を定式化しようとする、私が今尋ねた他の質問に関連しています。

4

3 に答える 3

1

あなたの質問への答えはここにあります: https://forums.oracle.com/message/4798165#4798165

基本的に、-Dcom.sun.management.jmxremote.port=0 を使用して、ログをチェックして、JMX コネクタ サーバーがリッスンしているポートを見つけます。

これを行うための秘訣の 1 つは、ルート ロガーのログ レベルを CONFIG に変更する必要があることです。クラスターの構成とアクセスのレベルによっては、logging.properties ファイルを変更してこれを行うのが難しい場合があります。

もう 1 つの方法は、java.util.logging.config.class を指定して独自のクラスを指定し、ロギング構成を行うことです。このようなクラスは、コードで簡単に配布できます。そうすれば、ローカル ファイル システムにアクセスせずにルート ログ レベルを簡単に変更できるはずです。

Hadoop クラスターでこのアプローチを実際にテストしたことはまだありませんが、うまくいくはずです。

于 2013-10-25T17:27:59.070 に答える
0

それに応じて /etc/hadoop/hadoop-env.sh をセットアップする必要があります。

http://theholyjava.wordpress.com/2012/09/21/enabling-jmx-monitoring-for-hadoop-and-hive/

ただし、これが最善の方法であるかどうかは疑問です。特定の動作を観察したい場合は、特定の入力ファイルを分離し、ローカルの疑似クラスターに対してデバッグする方がよいかもしれません。また、システム メトリックが必要な場合は、実行できます。すでに Hadoop に組み込まれているため、Ganglia に外観を与えるよりも悪い:

http://wiki.apache.org/hadoop/GangliaMetrics

于 2013-07-23T14:46:12.957 に答える