J'ai un cluster emr avec la configuration ci-dessous. Je cours sous spark-sql pour exécuter 5 scripts hive en parallèle.Surutilisation des ressources de fil avec étincelle
spark-sql --master yarn --num-executors 1 --executor-memory 20G --executor-cores 20 --driver-memory 4G -f hive1.hql & spark-sql --master yarn --num-executors 1 --executor-memory 20G --executor-cores 20 --driver-memory 4G -f hive2.hql & spark-sql --master yarn --num-executors 1 --executor-memory 20G --executor-cores 20 --driver-memory 4G -f hive3.hql & spark-sql --master yarn --num-executors 1 --executor-memory 20G --executor-cores 20 --driver-memory 4G -f hive4.hql & spark-sql --master yarn --num-executors 1 --executor-memory 20G --executor-cores 20 --driver-memory 4G -f hive5.hql
Mais, 270 GB de mémoire est utilisée par fil.
Selon les paramètres de commande donnée,
Chaque emploi saprk devrait utiliser seulement 120 Go de RAM.
1 * 20 + 4 = 24 Go RAM
5 emplois = 5 * 24 = 120 Go
Mais, pourquoi le fil est en utilisant 270 Go de RAM? (Aucun autre travail hadoop n'est en cours dans le cluster)
Dois-je inclure un paramètre supplémentaire pour limiter l'utilisation des ressources de fil?
Utilisez-vous le paramètre EMR: maximizeResourceAllocation true pour ce cluster? Il sera utilisé par défaut si vous le lancez depuis la console. –
Oui. L'allocation dynamique des ressources est vraie pour ce cluster par défaut. Le changer en faux a résolu mon problème. Veuillez regarder dans la section des réponses pour plus d'explications. –