2011-04-12 3 views
16

Je suis nouveau à hadoop et essaie de traiter wikipedia dump. C'est un fichier xml compressé gzip de 6,7 Go. J'ai lu que hadoop supporte les fichiers compressés gzip mais ne peut être traité que par mapper sur un seul travail car un seul mappeur peut le décompresser. Cela semble mettre une limite au traitement. Y a-t-il une alternative? comme décompresser et diviser le fichier xml en plusieurs morceaux et les recompresser avec gzip.Hadoop gzip fichiers compressés

Je lis sur le gzip Hadoop de http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html

Merci pour votre aide.

Répondre

3

Les fichiers GZIP ne peuvent être partitionnés en raison d'une limitation du codec. 6.7GB n'est vraiment pas énorme, il suffit de le décompresser sur une seule machine (cela prendra moins d'une heure) et de copier le XML vers HDFS. Ensuite, vous pouvez traiter le XML Wikipedia dans Hadoop.

Cloud9 contient une classe WikipediaPageInputFormat que vous pouvez utiliser pour lire le code XML dans Hadoop.

20

Un fichier compressé avec le codec GZIP ne peut pas être divisé en raison du fonctionnement de ce codec. Un seul SPLIT dans Hadoop ne peut être traité que par un seul mappeur; un seul fichier GZIP ne peut donc être traité que par un seul mappeur.

Il y a atleast trois façons de contourner cette limitation:

  1. Comme une étape de pré-traitement: Décompressez le fichier et recompresser en utilisant un codec sécable (LZO)
  2. Comme une étape de pré-traitement: Décompressez le fichier, diviser en plus petits ensembles et recompresser. (See this)
  3. Utilisez ce patch pour Hadoop (que j'ai écrit) qui permet un moyen de contourner ceci: Splittable Gzip

HTH

+0

Ne pas nous avons aussi besoin de maintenir l'intégrité du fichier xml pour chaque groupe? – root1982

+0

Oui, et c'est la tâche de l'instance RecordReader utilisée. –

+0

Cela est vrai pour un gzipping de fichiers complet, mais Hadoop peut utiliser le gzipping de blocs pour contourner ce problème. Voir la réponse de Ted. – jhclark

8

C'est l'une des plus grandes compréhension miss dans HDFS.

Les fichiers compressés en tant que fichier gzip ne peuvent pas être partagés par MapReduce, mais cela ne signifie pas que GZip en tant que codec n'a aucune valeur dans HDFS et ne peut pas être divisé. GZip en tant que codec peut être utilisé avec les fichiers RCFiles, les fichiers de séquence, les fichiers Arvo et bien d'autres formats de fichiers. Lorsque le codec Gzip est utilisé dans ces formats divisibles, vous obtenez une excellente compression et une très bonne vitesse de Gzip plus le composant séparable.

Questions connexes