submitted data big are java algorithm data-structures hadoop mapreduce

java - data - Archivos comprimidos Hadoop gzip



map reduce jobs are submitted on____________ (4)

Soy nuevo en hadoop y estoy tratando de procesar volcado de wikipedia. Es un archivo xml comprimido gzip de 6.7 GB. Leí que hadoop admite archivos comprimidos con gzip, pero el asignador solo puede procesarlos en un solo trabajo, ya que solo uno puede descomprimirlos. Esto parece poner una limitación en el procesamiento. ¿Hay alguna alternativa? como descomprimir y dividir el archivo xml en varios fragmentos y recomprimirlos con gzip.

Leí sobre el hadoop gzip en http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html

Gracias por tu ayuda.



Este es uno de los mayores errores de comprensión en HDFS.

Sí, MapReduce no puede dividir los archivos comprimidos como un archivo gzip, pero eso no significa que GZip como códec no tenga ningún valor en HDFS y no pueda hacerse divisible.

GZip como un códec puede usarse con RCFiles, archivos de secuencia, archivos Arvo y muchos más formatos de archivo. Cuando se utiliza el Códec Gzip dentro de estos formatos divisibles, obtiene la gran compresión y la velocidad bastante buena de Gzip más el componente divisible.


Los archivos GZIP no se pueden particionar de ninguna manera, debido a una limitación del códec. 6.7GB realmente no es tan grande, así que simplemente descomprímalo en una sola máquina (tomará menos de una hora) y copie el XML a HDFS. Entonces puedes procesar el XML de Wikipedia en Hadoop.

Cloud9 contiene una clase WikipediaPageInputFormat que puede usar para leer el XML en Hadoop.


Un archivo comprimido con el códec GZIP no se puede dividir debido a la forma en que funciona este códec. Una sola SPLIT en Hadoop solo puede ser procesada por un solo mapeador; por lo tanto, un solo Mapeador solo puede procesar un único archivo GZIP.

Hay al menos tres formas de evitar esa limitación:

  1. Como paso de preprocesamiento: descomprima el archivo y vuelva a comprimir utilizando un códec divisible (LZO)
  2. Como paso de preprocesamiento: descomprima el archivo, divídalo en conjuntos más pequeños y vuelva a comprimirlo. ( Ver esto )
  3. Use este parche para Hadoop (que escribí) que permite una forma de evitar esto: Gzip dividible

HTH