4

私はEMRでジョブをテストしていますが、すべてのテストの開始には多くの時間がかかります。Amazon EMRでサーバー/マスターノードを存続させる方法はありますか?私はこれがAPIで実行できることを知っています。しかし、これがawsコンソールで実行できるかどうか知りたいですか?

4

3 に答える 3

2

AWS コンソールからこれを行うことはできません。開発者ガイドを引用するには

AWS マネジメント コンソールの Amazon Elastic MapReduce タブは、ジョブ フローへのステップの追加をサポートしていません。

これは、ジョブ フローを作成し、それにステップを追加することによって、CLI および API を介してのみ行うことができます。

$ ./elastic-mapreduce --create --active --stream
于 2011-02-25T05:28:05.117 に答える
1

Web コンソールではこれを行うことはできませんが、API とプログラミング ツールを使用すると、実行時間の長いジョブに複数のステップを追加できます。これは私が行っていることです。そうすれば、毎回新しいジョブを再作成することなく、同じ長期実行クラスターで次々とジョブを開始できます。

Python に精通している場合は、Botoライブラリを強くお勧めします。他の AWS API ツールでもこれを行うことができます。

Boto EMR チュートリアルに従うと、いくつかの例が見つかります。

アイデアを提供するために、これが私が行うことです(ストリーミングジョブで):

# Connect to EMR
conn = boto.connect_emr()

# Start long-running job, don't forget keep_alive setting
jobid = conn.run_jobflow(name='My jobflow',
                          log_uri='s3://<my log uri>/jobflow_logs',
                          keep_alive=True)

# Create your streaming job
step = StreamingStep(...)

# Add the step to the job
conn.add_jobflow_steps(jobid, [step])

# Wait till its complete
while True:
  state = conn.describe_jobflow(jobid).steps[-1].state
  if (state == "COMPLETED"):
    break
  if (state == "FAILED") or (state == "TERMINATED") or (state == "CANCELLED"):
    print >> sys.stderr, ("EMR job failed! Message = %s!") % (state)
    sys.exit(1)
  time.sleep (60)

# Create your next job here and add it to the EMR cluster
step = StreamingStep(...)
conn.add_jobflow_steps(jobid, [step])

# Repeat :)
于 2012-07-26T22:28:15.937 に答える
0

マシンを稼働させ続けるには、インタラクティブなピッグ セッションを開始します。その後、マシンはシャットダウンしません。その後、次を使用して、コマンド ラインから map/reduce ロジックを実行できます。

cat infile.txt | yourMapper | sort | yourReducer > outfile.txt
于 2010-06-21T20:16:46.873 に答える