Hadoop gzip сжатые файлы
Я новичок в hadoop и пытаюсь обработать википедии. Это сжатый XML файл размером 6,7 ГБ. Я читал, что hasoop поддерживает сжатые файлы gzip, но может обрабатываться только картографом только на одном задании, так как только один обработчик может его распаковать. Это, по-видимому, ограничивает обработку. Есть ли альтернатива? например, распаковывать и разбивать xml файл на несколько фрагментов и повторно сжимать их с помощью gzip.
Я прочитал о hadoop gzip из http://researchcomputing.blogspot.com/2008/04/hadoop-and-compressed-files.html
Спасибо за вашу помощь.
Ответы
Ответ 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.
Ответ 4
Почему бы не развернуть его и вместо этого использовать Splittable LZ compression? m
http://blog.cloudera.com/blog/2009/11/hadoop-at-twitter-part-1-splittable-lzo-compression/