Taille de bloc Hadoop Composite XDF
MapReduce divise chaque fichier d’entrée de texte dans un ou plusieurs fractionnements d’entrée qui, par défaut, la taille de bloc très, par exemple, 128 Mo-
Chaque fractionnement d’entrée est converti en texte non compressé, non analysée une sortie compressée et analysée les fichiers binaires xdfd dans le sous-répertoire « données » du répertoire de sortie – informations d’en-tête pour le jeu de xdfd sont dans un fichier de métadonnées unique xdfm dans le répertoire « métadonnées »
-
Pour plus d’efficacité dans les analyses ultérieures, xdfd fichier de sortie doit correspondre environ à la taille de bloc très
-
Pour compenser la compression XDF que vous aurez donc généralement besoin pour augmenter la taille de fichier de sortie xdfd en augmentant l’entrée fractionner la taille à l’aide de ce paramètre pour RxHadoopMR() :
-
hadoopSwitches="-Dmapred.min.split.size=1000000000"
-
Pour les installations d’Hadoop plus récentes à l’aide de fils, le paramètre est mapreduce.input.fileinputformat.split.minsize
-
-
Augmenter l’entrée fractionnée davantage taille peut réduire le nombre de fichiers XDF composites et, par conséquent, le numéro de carte parallélisée tâches dans les analyses ultérieures. Cela peut être utile si le nombre de slots de carte disponibles ou des conteneurs est faible par rapport au nombre de fractionnements de. À l’inverse, lorsque la plupart mappent des emplacements ou conteneurs sont disponibles, fractionne de l’entrée la plus petite et plus xdfd risque de terminer plus rapidement.
-
Exemple
Importation d’un CSV d’entrée de 670 Mo dans le Sandbox de Hortonworks à l’aide de l’entrée par défaut fractionner (32 Mo) créé 670/32 = 21 xdfd avec un rxSummary des performances de 185". Augmentation de la taille d’entrée split à 150 Mo créé xdfd 5's chaque environ 32 Mo avec une performance de rxSummary de 68".
rxSetComputeContext (RxHadoopMR(hadoopSwitches = "-Dmapreduce.input.fileinputformat.split.minsize=150000000")) rxImport (myCSV, myCXdf, remplacer = TRUE) ensemble de # rxSetComputeContext(RxHadoopMR()) de nouveau lorsque vous avez terminé