ダイナミックアロケーション機能を私のサブミットされたアプリケーションのために使用しますが、アプリケーションはスケーリングしません。スパークダイナミックアロケーションは動作しません
マイクラスタは3ノードから成り、それぞれがあります
- 4コア
- 8ギガバイトRAM
- スパーク:1.6
- 糸+ MapReduce2:2.7
Iをhdp 2.4を使用し、必要なすべての動的割り当てプロパティを次のように設定します(hdp bで事前設定されています)私はdocsでそれらを確認UT):
spark.dynamicAllocation.enabled=true
spark.dynamicAllocation.initialExecutors=5
-spark.dynamicAllocation.maxExecutors=10
spark.dynamicAllocation.minExecutors=1
spark.shuffle.service.enabled=true
yarn.nodemanager.aux-services=mapreduce_shuffle,spark_shuffle
yarn.nodemanager.aux-services.spark_shuffle.class=org.apache.spark.network.yarn.YarnShuffleService
糸ResourceManager-UIを使用して、使用されているコアを検索します。
私が次のPI-例を提出すると、は、1つのコアごとに3つの容器が使用されます。そこには十分なリソースが割り当てられますが、それ以上のリソースは使用されませんでした。
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--deploy-mode cluster \
--driver-memory 512m \
--executor-memory 512m\
lib/spark-examples*.jar 10000
定義済みのエグゼキュータの数でPIサンプルを送信するようにテストすると、さらに多くのリソースを割り当てることができます。この例では、1つのコアごとに8個のコンテナを静的に割り当てます。私が間違っていた何を(+ 7キュータ1つのドライバ)
./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
--num-executors 7 \
--driver-memory 512m \
--executor-memory 512m \
lib/spark-examples*.jar 100000
、その火花が自動的に利用可能なリソースの最大値を割り当てられませんか?あなたは助けるために
ありがとうございました:)
スパークはすぐにメモリを与えません。必要な場合は、sparkだけがメモリを割り当てます。 –