以前のAMIバージョンの Amazon を使用したクラスターの作成 EMR - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

以前のAMIバージョンの Amazon を使用したクラスターの作成 EMR

Amazon EMR 2.x および 3.x リリースはAMIバージョン で参照されています。Amazon EMRリリース 4.0.0 以降では、 などのリリースラベルを使用して、リリースバージョンによってリリースが参照されますemr-5.11.0。この変更は、 AWS CLI または プログラムを使用してクラスターを作成するときに最も顕著です。

を使用してAMIリリースバージョンを使用してクラスター AWS CLI を作成する場合は、 などの --ami-versionオプションを使用します--ami-version 3.11.0。Amazon 4.0.0 EMR 以降で導入された多くのオプション、機能、およびアプリケーションは、 を指定すると利用できません--ami-version。詳細については、「AWS CLI コマンドリファレンス」の「create-cluster」を参照してください。

次の AWS CLI コマンド例では、 AMIバージョンを使用してクラスターを起動します。

注記

読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

aws emr create-cluster --name "Test cluster" --ami-version 3.11.0 \ --applications Name=Hue Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey \ --instance-groups InstanceGroupType=MASTER,InstanceCount=1,\ InstanceType=m3.xlarge InstanceGroupType=CORE,InstanceCount=2,\ InstanceType=m3.xlarge --bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,\ Name="Configuring infinite JVM reuse",Args=["-m","mapred.job.reuse.jvm.num.tasks=-1"]

プログラムにより、すべての Amazon EMRリリースバージョンは の RunJobFlowRequestアクションを使用してクラスターEMRAPIを作成します。次の Java コードの例では、AMIリリースバージョン 3.11.0 を使用してクラスターを作成します。

RunJobFlowRequest request = new RunJobFlowRequest() .withName("AmiVersion Cluster") .withAmiVersion("3.11.0") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");

次の RunJobFlowRequest 呼び出しには、代わりにリリースラベルを使用します。

RunJobFlowRequest request = new RunJobFlowRequest() .withName("ReleaseLabel Cluster") .withReleaseLabel("emr-7.3.0") .withInstances(new JobFlowInstancesConfig() .withEc2KeyName("myKeyPair") .withInstanceCount(1) .withKeepJobFlowAliveWhenNoSteps(true) .withMasterInstanceType("m3.xlarge") .withSlaveInstanceType("m3.xlarge");

クラスターサイズの設定

クラスターの実行時、Hadoop は、データを処理するときに必要だったマッパータスクとリデューサータスクの数を確認します。クラスターが大きければ、リソースを効率的に使用し、処理時間を短縮するために、タスクの数は多くなるはずです。通常、EMRクラスターはクラスター全体で同じサイズのままです。クラスターの作成時にタスクの数を設定します。実行中のクラスターのサイズを変更すると、クラスター実行中に処理を変更できます。つまり、タスクの数は固定されておらず、クラスターが存続している間は変更できます。最適な数のタスクを設定するのに役立つ設定オプションは 2 つあります:

  • mapred.map.tasksperslot

  • mapred.reduce.tasksperslot

これらのオプションは両方とも mapred-conf.xml ファイルで設定できます。ジョブをクラスターに送信するとき、クラスター全体で使用できるマップおよびリデューススロットの現在の合計数がジョブクライアントによって確認されます。その後、ジョブクライアントは次の方程式を使用して、タスクの数を設定します。

  • mapred.map.tasks = mapred.map.tasksperslot ×クラスターのマップスロット数

  • mapred.reduce.tasks =mapred.reduce.tasksperslot ×クラスターのリデューススロット数

ジョブクライアントは、タスク数が設定されていない場合にのみ tasksperslot パラメータを読み込みます。タスク数はいつでも無効にできます。この無効にする処理は、ブートストラップアクションを使用してすべてのクラスターに対してまとめて実行することも、設定を変更するステップを追加してジョブごとに個別に実行することも可能です。

Amazon はタスクノードの障害にEMR耐え、タスクノードが使用できなくなってもクラスターの実行を継続します。Amazon は、障害が発生したタスクノードを置き換えるために、追加のタスクノードEMRを自動的にプロビジョニングします。

クラスターステップごとに異なる数のタスクノードを設定できます。また、実行中のクラスターにステップを追加して、タスクノードの数を変更することもできます。デフォルトで、すべてのステップが確実に順次実行されるので、どのステップに対しても、実行中のタスクノードの数を指定できます。