2017-11-15 12 views
0

AWS EMR-Sparkでアプリケーションを実行していました。ここでは、スパーク送信ジョブです。 -AWS EMR-Yarn Container

Arguments : spark-submit --deploy-mode cluster --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08 

AWSはリソース管理にYARNを使用します。私はメトリック(以下のスクリーンショット)を見ていて、YARNの「コンテナ」メトリクスについて疑問を抱いていました。ここ

Screenshot

容器はがしかし、私は4つのノード(3スレーブ+ 1つのマスター)、すべての8コアCPUを用いた2として示されている割り当てられました。では、2つのコンテナはどのように割り当てられますか?

+0

ジョブに割り当てられているコアのメモリ容量はどれくらいですか?ノードの1つがApplication Managerを実行し、そのノードで1つのコアが予約されていることに注意してください。したがって、各エグゼキュータに8つのコアを割り当てると、2つのエグゼキュータのみが起動されます。 –

+0

アプリケーション・マネージャはマスター・ノード上で正しく動作しますか?また、私はコアのメモリを指定していないので、いくつかのデフォルトを取得する必要があります。 – Sanchay

+0

AMはドライバ上ではなくスレーブ上で動作しません。この設定で 'capacity-scheduler.xml'を調整することを思い出しましたか?' 'yarn.scheduler.capacity.resource-calculator ':" org.apache.hadoop.yarn.util.resource.DominantResourceCalculator "'?また、必要なエグゼキュータの数を指定する必要があります。 YARNは自動的にクラスタ全体を利用しません。 –

答えて

1

あなたがする必要があることのカップル。まず第一に、あなたが指定したすべてのコアを使用することはありませんcapacity-scheduler.xml

"yarn.scheduler.capacity.resource-calculator":"org.apache.hadoop.yarn.util.resource.DominantResourceCalculator" 

そうでない場合YARNに以下の構成を設定する必要があります。次に、必要なエグゼキュータの数と、必要なコアの数と、エグゼキュータに割り当てたいメモリの量を指定する必要があります(シャッフルパーティションが多数ある場合や、データをドライバに収集します)。

YARNは、その時点で多くの異なるジョブを実行しているクラスタを管理するように設計されているため、上記の設定を強制しない限り、デフォルトではすべてのリソースを1つのジョブに割り当てません。さらに、Sparkのデフォルト設定はほとんどのジョブでは不十分で、明示的に設定する必要があります。最適なパフォーマンスのためにスパーク設定を調整する方法を理解するには、this blog postまでお読みください。

+0

エグゼキュータの数を10、コアの数を4、割り当てられたコンテナは6(データの最大パーティション数)でした。ありがとう。 – Sanchay