Подтвердить что ты не робот

Hadoop gzip сжатые файлы

Я новичок в hadoop и пытаюсь обработать википедии. Это сжатый XML файл размером 6,7 ГБ. Я читал, что hasoop поддерживает сжатые файлы gzip, но может обрабатываться только картографом только на одном задании, так как только один обработчик может его распаковать. Это, по-видимому, ограничивает обработку. Есть ли альтернатива? например, распаковывать и разбивать xml файл на несколько фрагментов и повторно сжимать их с помощью gzip.

Я прочитал о hadoop gzip из http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html

Спасибо за вашу помощь.

4b9b3361

Ответ 1

Файл, сжатый кодеком GZIP, не может быть разделен из-за того, как работает этот кодек. Один SPLIT в Hadoop может обрабатываться только одним картографом; поэтому один файл GZIP может обрабатываться только одним Mapper.

По крайней мере три способа обойти это ограничение:

  • Как шаг предварительной обработки: распакуйте файл и повторно сжимайте с помощью разделяемого кодека (LZO)
  • Как шаг предварительной обработки: распакуйте файл, разделите его на более мелкие наборы и повторно сжимайте. (Смотрите это)
  • Используйте этот патч для Hadoop (который я написал), который позволяет обойти это: Splittable Gzip

НТН

Ответ 2

Это одно из самых больших недостатков в HDFS.

Да файлы, сжатые в виде файла gzip, не могут быть уничтожены MapReduce, но это не означает, что GZip в качестве кодека не имеет значения в HDFS и не может быть расторгнут.

GZip как кодек может использоваться с RCFiles, Sequence Files, Arvo Files и многими другими форматами файлов. Когда Gzip Codec используется в этих раскодированных форматах, вы получаете отличное сжатие и довольно хорошую скорость от Gzip плюс расколотый компонент.

Ответ 3

Файлы GZIP не могут быть разделены каким-либо образом из-за ограничения кодека. 6.7GB действительно не так уж и велико, поэтому просто распакуйте его на одной машине (потребуется меньше часа) и скопируйте XML до HDFS. Затем вы можете обрабатывать XML Википедии в Hadoop.

Cloud9 содержит класс WikipediaPageInputFormat что вы можете использовать для чтения XML в Hadoop.