2016-04-13 1 views
0

J'ai 1 maître et 3 esclaves (4 cœurs chacun)Quels sont les avantages d'augmenter la taille de la partition et de diminuer le nombre de partitions dans l'étincelle?

Par défaut, la taille de la partition min dans mon cluster spark est de 32 Mo et ma taille de fichier est de 41 Go. donc je suis en train de réduire le nombre de partitions en changeant la minsize à 64Mb

sc.hadoopConfiguration.setLong("mapreduce.input.fileinputformat.split.minsize", 64*1024*1024) 
val data =sc.textFile("/home/ubuntu/BigDataSamples/Posts.xml",800) 
data.partitions.size = 657 

Quels sont les avantages de l'augmentation de la taille de la partition et en réduisant le nombre de partitions. Parce que lorsque mes partitions sont autour de 1314 cela a pris environ 2-3min appx et même après avoir réduit le nombre de partitions, il prend encore le même laps de temps.

Répondre

0

Plus il y a de partitions, plus les frais généraux sont importants, mais dans une certaine mesure, cela aide les performances car vous pouvez les exécuter tous en parallèle. Donc, d'une part, il est logique de garder le nombre de partitions égal au nombre de cœurs. D'un autre côté, il peut arriver que la taille spécifique de la partition conduise à une quantité spécifique d'ordures dans la machine virtuelle Java, ce qui peut entraîner une surcharge. Dans ce cas, vous souhaitez augmenter le nombre de partitions afin de réduire l'empreinte mémoire de chacune d'entre elles.

Cela peut également dépendre du flux de travail. Considérez groupByKey vs reduceByKey. Dans ce dernier cas, vous pouvez calculer beaucoup localement et envoyer juste un peu au noeud distant. Les shuffles sont écrits sur le disque avant d'être envoyés à distance, ce qui fait que plus de partitions peuvent réduire les performances.

Il est également vrai que certains frais généraux sont associés à chaque partition. Dans le cas où vous souhaitez partager un cluster avec plusieurs personnes, vous pouvez envisager d'utiliser un nombre de partitions un peu moins élevé pour tout traiter, afin que tous les utilisateurs disposent de temps de traitement.

Smth comme ceci.