2016-06-23 5 views
1

Мне нужно загрузить в текстовый файл в формате HDFS 100 текстовых файлов для преобразования данных с помощью Apache Pig.Apache Hadoop: Вставьте сжатые данные в HDFS

Как Вы думаете, что это лучший вариант:

а) Сжать все текстовые файлы и загружать только один файл,

б) нагрузки все текстовые файлы по отдельности?

ответ

0

Это зависит от размера файлов, параметров кластера и методов обработки.

Если ваши текстовые файлы сопоставимы по размеру с размером блока HDFS (т. Е. Размер блока = 256 МБ, размер файла = 200 МБ), имеет смысл загрузить их как есть.

Если ваши текстовые файлы очень маленькие, будет типичная проблема с большими файлами HDFS & - каждый файл будет занимать 1 блок hdfs (не физически), поэтому NameNode (который обрабатывает метаданные) будет страдать от некоторых накладных расходов при управлении множеством блоков , Чтобы решить эту проблему, вы можете объединить свои файлы в один, использовать архивы хаопов (HAR) или какой-либо пользовательский формат файла (например, файлы последовательности).

Если пользовательский формат используется, вам придется выполнять дополнительную работу с обработкой - для этого потребуется использовать пользовательские форматы ввода.

На мой взгляд, 100 не так сильно влияет на производительность NameNode, поэтому оба варианта кажутся жизнеспособными.