reducción official función firma descarga concepto basa algoritmo hadoop mapreduce

official - Proporcionando varios archivos no textuales a un solo mapa en Hadoop MapReduce



mapreduce ibm (2)

Actualmente estoy escribiendo una aplicación distribuida que analiza archivos PDF con la ayuda de Hadoop MapReduce. La entrada al trabajo de MapReduce es de miles de archivos PDF (que en su mayoría oscilan entre 100 KB y ~ 2 MB), y la salida es un conjunto de archivos de texto analizados.

Para fines de prueba, inicialmente utilicé WholeFileInputFormat proporcionado en Tom White''s Hadoop. La guía definitiva , que proporciona un archivo único a un solo mapa. Esto funcionó bien con una pequeña cantidad de archivos de entrada, sin embargo, no funciona correctamente con miles de archivos por razones obvias. Solo un mapa para la tarea que tarda alrededor de un segundo en completarse es ineficiente.

Entonces, lo que quiero hacer es enviar varios archivos PDF en un mapa (por ejemplo, combinando varios archivos en un solo fragmento que tiene un tamaño de bloque HDFS ~ 64MB). Descubrí que CombineFileInputFormat es útil para mi caso. Sin embargo, no puedo imaginar cómo ampliar esa clase abstracta, de modo que pueda procesar cada archivo y su nombre de archivo como un único registro de clave-valor.

Cualquier ayuda es apreciada. ¡Gracias!


Creo que un SequenceFile se ajustará a tus necesidades aquí: http://wiki.apache.org/hadoop/SequenceFile

Esencialmente, colocas todos tus archivos PDF en un archivo de secuencia y los diseñadores recibirán tantos archivos PDF como quepan en un bloque HDFS del archivo de secuencia. Cuando crea el archivo de secuencia, configurará la clave para que sea el nombre del archivo PDF, y el valor será la representación binaria del PDF.


Puede crear archivos de texto con patches HDFS para sus archivos y usarlos como entrada. Le dará a Usted la reutilización del mapeador para muchos archivos, pero costará la localidad de datos. Si sus datos son relativamente pequeños, el factor de replicación alto (cerca del número de nodos de datos) resolverá el problema.