2011-07-07 8 views
0

Étant donné que j'ai besoin de traiter une entrée de 20 Go en utilisant 10 instances. Est-il différent d'avoir 10 fichiers d'entrée de 2 Go comparer à 4 fichiers d'entrée de 5 Go? Dans ce dernier cas, Amazon Elastic MapReduce peut-il distribuer automatiquement la charge de 4 fichiers d'entrée sur 10 instances? (J'utilise la méthode Streaming lorsque mon mapper est écrit en utilisant ruby)Amazon Elastic Map Réduire: La taille des fragments d'entrée est-elle importante?

Répondre

3

La seule chose qui compte est de savoir si les fichiers sont divisibles.

Si les fichiers sont décompressés en texte brut ou compressés avec lzo, Hadoop triera le découpage.

fichiers x5 2gb entraînera ~ 100 divisions et donc ~ 100 tâches de carte (10GB/128mb (DME Blocksize) ~ = 100)

x10 fichiers 1gb entraînera encore ~ ​​100 divisions et donc, encore une fois, 100 tâches de carte. Si les fichiers sont compressés avec gzip ou bzip2, Hadoop (au moins, la version exécutée sur EMR) ne divisera pas les fichiers.

x5 fichiers 2gb entraînera seulement 5 divisions (et encore d'où seulement 5 tâches de carte)

x10 fichiers 1Go résultat en 10 divisions (et encore d'où seulement 10 tâches de carte)

Mat

+0

Donc, la scission est basée sur le saut de ligne, n'est-ce pas? –

+0

Vous vous demandez toujours comment ce split s'adapte à la façon dont fonctionne l'API de flux ... –

+0

taille de la partition, en termes de mapred.max.split.size est basé sur des octets, pas des lignes. Si vous utilisez NLineInputFormat, vous pouvez spécifier "splits" en termes de nombre de lignes en utilisant mapred.line.input.format.linespermap. voir http://www.scribd.com/doc/23046928/Hadoop-Performance-Tuning pour plus d'informations –

Questions connexes