2011-04-12 14 views
16

Soy nuevo en hadoop e intento procesar el volcado de wikipedia. Es un archivo xml comprimido de 6.7 GB gzip. Leí que hadoop admite archivos comprimidos gzip, pero solo puede ser procesado por el mapeador en un solo trabajo, ya que solo un mapeador puede descomprimirlo. Esto parece poner una limitación en el procesamiento. ¿Hay una alternativa? como descomprimir y dividir el archivo xml en varios fragmentos y recomprimirlos con gzip.Archivos comprimidos Hadoop gzip

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

Gracias por su ayuda.

Respuesta

3

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 copia el XML a HDFS. Luego puede procesar el XML de Wikipedia en Hadoop.

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

20

Un archivo comprimido con el códec GZIP no se puede dividir debido a la forma en que funciona este códec. Un único SPLIT en Hadoop solo puede ser procesado por un solo asignador; por lo tanto, un solo archivo GZIP solo puede ser procesado por un solo Mapper.

Hay al menos tres maneras de ir alrededor de esa limitación:

  1. Como un paso de procesamiento previo: Descomprimir el archivo y volver a comprimir usando un códec divisible (LZO)
  2. Como un paso de procesamiento previo: Descomprimir el archivo, dividir en conjuntos más pequeños y volver a comprimir. (See this)
  3. Use este parche para Hadoop (que he escrito) que permite una forma de evitar esto: Splittable Gzip

HTH

+0

¿No tenemos también necesidad de mantener la integridad del archivo XML para cada división? – root1982

+0

Sí, y esa es la tarea de la instancia de RecordReader que se utiliza. –

+0

Esto es cierto de un archivo comprimido gzip completo, pero Hadoop puede usar bloque gzipping para evitar esto. Ver la respuesta de Ted. – jhclark

8

Ésta es una de las mayores comprensión faltar en HDFS.

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

GZip as a Codec se puede utilizar con RCFiles, Sequence Files, Arvo Files y muchos más formatos de archivo. Cuando se usa el códec Gzip dentro de estos formatos divisibles, obtienes la gran compresión y la muy buena velocidad de Gzip más el componente divisible.

Cuestiones relacionadas