Dimensione del blocco XDF Hadoop composita
MapReduce divide ogni file di testo di input in uno o più divisioni di input che, per impostazione predefinita, la dimensione del blocco HDFS, ad esempio, 128 MB-
Ogni divisione input viene convertito da testo non compresso e non analizzato in un output compresso e analizzato il file binario xdfd nella sottodirectory "dati" della directory di output: informazioni di intestazione per il set di xdfd è in un file di metadati singolo xdfm nella directory "metadati"
-
Per successive analisi efficienza, ogni file di output xdfd deve corrispondere approssimativamente la dimensione del blocco HDFS
-
Per compensare la compressione XDF che pertanto in genere è necessario aumentare la dimensione del file di output xdfd aumentando l'input diviso la dimensione utilizzando questo parametro per RxHadoopMR():
-
hadoopSwitches="-Dmapred.min.split.size=1000000000"
-
Per le installazioni Hadoop utilizzando filati più recente, il parametro è mapreduce.input.fileinputformat.split.minsize
-
-
Aumentando l'input suddividere ulteriormente le dimensioni può ridurre il numero di file XDF compositi e pertanto il numero di mappa parallelizzata attività di analisi successive. Ciò può risultare utile se il numero di slot disponibili mappa o contenitori è piccolo rispetto al numero di divisioni. Al contrario, quando molti mappare slot o contenitori disponibili, divide input più piccolo e può comportare ulteriori xdfd per completare rapidamente.
-
Esempio
Importazione di un input CSV 670 MB nella Sandbox dell'Hortonworks mediante input predefinito divisa (32MB) di dimensioni creati 670/32 = 21 xdfd con un rxSummary di 185". Aumento delle dimensioni di input split a 150MB creato xdfd 5's ogni circa 32MB con un rxSummary di 68".
rxSetComputeContext (RxHadoopMR(hadoopSwitches = "-Dmapreduce.input.fileinputformat.split.minsize=150000000")) rxImport (myCSV, myCXdf, sovrascrivere = TRUE) set # rxSetComputeContext(RxHadoopMR()) nuovamente al termine