web-dev-qa-db-ja.com

Spark-AWS EMRクラスターにはどのインスタンスタイプが推奨されますか?

EMR Sparkクラスターでいくつかの機械学習アルゴリズムを実行しています。使用するインスタンスの種類に興味があるので、最適なコスト/パフォーマンスを得ることができますか?

同じレベルの価格で、次の中から選択できます。

          vCPU  ECU  Memory(GiB)
m3.xlarge  4     13     15     
c4.xlarge  4     16      7.5
r3.xlarge  4     13     30.5

EMR Sparkクラスターではどのインスタンスを使用する必要がありますか?

18
shihpeng

一般的に言えば、それはあなたのユースケースやニーズなどに依存します...しかし、私はあなたが共有した情報を考慮して最小構成を提案できます。

2〜4 GBのデータの行列でALS分解またはSVDをトレーニングしようとしているようです。したがって、実際にはそれはデータの量が多すぎません。

小規模な分散クラスターをセットアップして構成するには、少なくとも1つのマスターと2つのノードが必要です。マスターはコンピューティングを一切実行しないため、リソースはあまり必要ありませんが、もちろんタスクスケジューリングなどを処理します。

必要に応じてスレーブ(インスタンス)を追加できます。

  • 1 xマスター: m3.xlargem5.xlarge-vCPU:4、RAM:EBSストレージで16 GB。
  • 2 xスレーブ: c3.4xlargec5.xlarge-vCPU:16、RAM:EBSストレージで32 GB。

EDIT:コメントで述べたように、第5世代インスタンスは、このスレッドで言及されている各インスタンスタイプ(R5、M5、およびC5)で使用できるようになりました。一般に、最新世代のインスタンスタイプは、古い世代のインスタンスタイプよりも安価でパフォーマンスも優れています。

C3、C4、およびC5はコンピューティング最適化インスタンスであり、R2、R3、R4と比較して、高性能プロセッサーを備え、EC2で最も低い価格/コンピューティングパフォーマンスを備えていますが、推奨されるユースケースが分散されていますメモリキャッシュとインメモリ分析。しかし、C5は低価格であなたのために仕事をします。

パフォーマンスの最適化:

  • Amazon EMRは時間単位で課金します。つまり、クラスターを実行すると、1時間分の料金が発生します。 Amazon EMRクラスターの1時間分の料金を払っている場合、データ処理時間をほんの数分だけ向上させることは、時間と労力に見合わない可能性があるため、これは覚えておくことが重要です。

  • ノードを追加してパフォーマンスを向上させる方が、クラスターの最適化に時間を費やすよりも安くなることを忘れないでください。

参照: Amazon EMRベストプラクティス-Parviz Deyhim

EDIT:Ganglia を有効にして、クラスターリソース(CPU、RAM、ネットワークI/O)を監視することも検討してください。これは、EMRクラスターのチューニングにも役立ちます。実際には、設定する必要はありません。 documentation に従って、作成時にEMRクラスターに追加します。

18
eliasah

一般的に言えば、優先インスタンスは実行中のジョブに依存します(メモリを大量に消費しますか?CPUを大量に消費しますか?など)。ただし、Sparkは非常にメモリを大量に消費するため、ほとんどの仕事。

あなたの特定のケース(4Gbデータセット)では、分散コンピューティングを最初から使用する理由がわかりません。ジョブの実行が遅くなるだけです。 sparkが必要な場合は、Xスレッドを使用してローカルモードで実行してください(コアの数に応じて)

2