2016-11-24 7 views
-2

Мне задали вопрос Предположим, у меня есть 10 миллионов файлов размером 2 КБ, поэтому я могу сохранить его в hdfs? любезно ответьте на этот вопрос.Предположим, у меня есть 10 миллинов файлов, размер которых составляет 2 КБ, поэтому я могу хранить его в hdfs?

+0

Конечно, вы можете хранить .. – subodh

+2

Добро пожаловать в StackOverflow. Обратите внимание, что это не бесплатный сервис написания кода, но мы готовы помочь другим программистам (и претендентам) написать собственный код. Пожалуйста, прочитайте разделы справки на странице [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask). Впоследствии, пожалуйста, обновите свой вопрос с помощью кода, который вы написали до сих пор, чтобы выполнить задачу (задачи), которую вы хотите достичь. –

ответ

2

HDFS предназначен для обработки больших files.If загрузке 2 кБ файлов будет накладных расходов и нагрузка возрастает на имя узла, так как это хранить метаданные о файлах.

Размер блока - это наименьшая единица данных, которую может хранить файловая система. Если вы сохраните файл размером 2kb, он займет один блок. Как только вы перейдете границу 64Mb, вам понадобится второй блок. Число операций чтения будет большим, что увеличит накладные расходы на чтение.

Лучший способ - объединить весь файл 2 КБ в один файл и сохранить его на hadoop.

0

Конечно, вы можете хранить данные в HDFS, если в NameNode достаточно памяти для всех метаданных файла. Кроме того, вместо того, чтобы тратить пространство HDFS, используя размер блока по умолчанию размером 64 МБ, вы можете указать размер блока для каждого файла, поэтому можете установить его на 2 КБ, если хотите. Обратите внимание, что использование HDFS, подобного этому, для хранения очень большого количества небольших файлов путем уменьшения размера каждого файла в порядке. У вас возникнут проблемы при выполнении вычислений MapReduce на большом количестве файлов небольшого размера. Обратите внимание, что 64 МБ является размером блока по умолчанию на HDFS, но вы можете установить большой размер (128 МБ или 256 МБ или больше) и даже более мелкие. HDFS не имеет понятия о блоках как таковой, это базовая файловая система (обычно Linux), которая должна обеспечивать соблюдение параметра blockize, и это то, что Linux делает за кулисами.