spark

hadoopのリソースの割り当てと上限そしてsparkでdynamic allocationを試す

更新日:

hadoopクラスターの動き方

リソース(メモリがどれくらい割り当てられるか)は、absolute capacity例えば3%、そしてこれは最低保証割り当てメモリみたいな感じ
と、User factor的なもの(ユーザーごとのweightというか、優先度というか)を掛けた値が実際のmaxのリソース上限
例えば,user factorが30であれば 3% x 30で90%、つまりクラスター全体のメモリの90%が上限となる。
クラスターはマルチてナンシーの場合、リソースが空いていたらclientの言いなりで
割り当ててあげますよ。absolute capacityはあくまで最低保証だから、その値超えても全然クラスター的には
問題ない、というか設計でおり。これが上限に達するとか、ほかのジョブのリソースが重なって、クラスターの100%のリソースを
食うと、後続のjobはpendingになるし、場合によっては、リソースのアロケーションが行われる。

 

設定 https://github.com/apache/spark/blob/master/docs/job-scheduling.md

spark.executor.instances = 0
spark.shuffle.service.enabled = true
spark.dynamicAllocation.enabled = true
spark.dynamicAllocation.executorAllocationRatio = 1
spark.dynamicAllocation.initialExecutors = 5
spark.dynamicAllocation.maxExecutors = 10
spark.dynamicAllocation.minExecutors = 2
spark.serializer = "org.apache.spark.serializer.KryoSerializer"

インタンスをゼロにしないと

dynamic allocationがonにならない!?

spark.executor.instances = 0

参考

https://mallikarjuna_g.gitbooks.io/spark/spark-dynamic-allocation.html
https://stackoverflow.com/questions/58939303/emr-cluster-shows-too-many-executors-when-spark-dynamic-allocation-is-true

 

以上です

 

-spark

Copyright© CTOを目指す日記 , 2024 All Rights Reserved.