2

Amazon EMR で Hadoop ストリーミング ジョブを長時間実行しています (15 ノード、>1.5 時間)。ジョブは約 75% の完了レベルで失敗します。マッパーとリデューサーの両方に Python を使用しています。

次の最適化を行いました。

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
sys.stderr = os.fdopen(sys.stderr.fileno(), 'w', 0)

logging.getLogger().setLevel(logging.INFO)

loggingまた、モジュールでログエントリを発行した直後に次を追加しました。

    sys.stderr.flush()
    time.sleep(30)
    sys.exit(3)

無駄にエラーをキャッチしようとする: Hadoop ログ ファイルにエラーが表示されない :(

Hadoop でメッセージをログに記録し、ドロップしないようにするにはどうすればよいですか?

4

1 に答える 1

0

Python ソリューションについては 100% ではありませんが、EMR コマンドライン インターフェイスを使用する場合、Amazon S3 でログ URI を指定する必要があることは知っています。

例えば

./elastic-mapreduce --create --other-options --log-uri s3n://emr.test/logs

これは、クラスターの起動時に指定されます。次に、S3 のログ ディレクトリの下に、次のディレクトリが作成されます。

/jobflowid
   /daemons
   /jobs
   /nodes
   /steps
   /task-attempts

/steps の下に、個々のジョブごとにフォルダーが作成され、その下に、ジョブの stderr、stdout、およびコントローラーの出力がここに書き込まれます。

于 2012-06-14T15:40:17.440 に答える