Sparkのこれらのこと(四)--Spark on yarnダイナミックリソース構成
2377 ワード
一、YARNの構成はまず、SparkのShuffle ServiceをサポートするようにYARNを構成する必要がある.
各クラスタの
二、Sparkの配置配置
動的リソース割当ポリシー:動的割当ポリシーをオンにすると、アプリケーションはtaskが十分なリソースがないため保留中にリソースを動的に申請します.これは、アプリケーションの既存のexecutorがすべてのtask並列実行を満たすことができないことを意味します.sparkは1ラウンド1ラウンドの申請リソースで、taskが
リソース回収ポリシー:アプリケーションのexecutorアイドル時間が
spark-sql On Yarnを使用してSQLを実行し、リソースを動的に割り当ててyarn-clientモードでThriftServerを起動します.
起動すると、ThriftServerはYarn上で長いサービスとして実行されます.
各クラスタの
yarn-site.xml
を変更します. -
yarn.nodemanager.aux-services
mapreduce_shuffle,spark_shuffle
-
yarn.nodemanager.aux-services.spark_shuffle.class
org.apache.spark.network.yarn.YarnShuffleService
spark.shuffle.service.port
7337
$SPARK_HOME/lib/spark-1.5.2-yarn-shuffle.jar
を各NodeManager ${HADOOP_HOME}/share/hadoop/yarn/lib/
にコピーする.構成を変更したすべてのノードを再起動します.二、Sparkの配置配置
$SPARK_HOME/conf/spark-defaults.conf
、以下のパラメータを追加する.spark.shuffle.service.enabled true // External shuffle Service
spark.shuffle.service.port 7337 //Shuffle Service , yarn-site
spark.dynamicAllocation.enabled true //
spark.dynamicAllocation.minExecutors 1 // Application executor
spark.dynamicAllocation.maxExecutors 30 // Application executor
spark.dynamicAllocation.schedulerBacklogTimeout 1s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout 5s
動的リソース割当ポリシー:動的割当ポリシーをオンにすると、アプリケーションはtaskが十分なリソースがないため保留中にリソースを動的に申請します.これは、アプリケーションの既存のexecutorがすべてのtask並列実行を満たすことができないことを意味します.sparkは1ラウンド1ラウンドの申請リソースで、taskが
spark.dynamicAllocation.schedulerBacklogTimeout
(デフォルト1 s)`の時間を保留または待機している場合、動的リソース割り当てを開始します.その後はsparkごとにdynamicAllocation.S u s tainedSchedulerBacklogTimeout(デフォルト1 s)は、十分なリソースが申請されるまで1回申請します.申請ごとの資源量は指数的に増加した,すなわち1,2,4,8などである.指数成長を採用したのは、2つの面から考えられている.1つは、アプリケーションがすぐに満たされる可能性があることを考慮したことだ.次に倍増するのは、アプリケーションを防止するために多くのリソースが必要であり、この方法は少ない回数の申請後に満足することができる.リソース回収ポリシー:アプリケーションのexecutorアイドル時間が
spark.dynamicAllocation.executorIdleTimeout( 60s)
を超えると回収されます.spark-sql On Yarnを使用してSQLを実行し、リソースを動的に割り当ててyarn-clientモードでThriftServerを起動します.
cd $SPARK_HOME/sbin/
./start-thriftserver.sh \
--master yarn-client \
--conf spark.driver.memory=10G \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.minExecutors=1 \
--conf spark.dynamicAllocation.maxExecutors=300 \
--conf spark.dynamicAllocation.sustainedSchedulerBacklogTimeout=5s
起動すると、ThriftServerはYarn上で長いサービスとして実行されます.