スタンドアロンモードでhadoopを実行している場合、Eclipseのリモートデバッグに問題はありません。ただし、疑似分散モードでHadoopを実行している場合は機能しません。疑似分散モードでhadoopを使用してEclipseリモートデバッグを試みる方法は次のとおりです。
次のように、Hadoopスクリプトに行を追加します。
#added this line to enable remote debugging
HADOOP_OPTS="$HADOOP_OPTS -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5000"
# run it
exec "$JAVA" $JAVA_HEAP_MAX $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
次に、次のようなリモートデバッグ構成を作成します。
コマンドラインからジョブを実行すると、次のように表示されます。
Listening for transport dt_socket at address: 5000
次に、eclipseに戻り、デバッグ構成を実行します。それは私のmain()関数にステップインします:
ただし、マッパーまたはレデューサーで設定したブレークポイントにはヒットしません。
ここでの問題は何ですか?スタンドアロンモードでhadoopを使用したが、疑似分散モードでは機能しなかったのはなぜですか?疑似分散モードでhadoopを使用してリモートデバッグを実行することは可能ですか?そうでない場合、Eclipseでmapreduceコードをデバッグするための「正しい」方法は何ですか?