2013-04-05 16 views
1

Есть ли какие-либо рекомендации относительно того, следует ли распространять файл с использованием распределенного кеша или нет?Насколько большой размер слишком большой для файла DistributedCache hasoop?

У меня есть файл размером 86746785 (я использую hadoop dfs -dus - не знаю, есть ли он в bytes или что). Это хорошая идея для распространения этого файла?

+1

Hadoop ДФС -dus в байтах –

ответ

3

Единственный жизнеспособный ответ - «это зависит».

Что нужно учитывать при использовании распределенного кэша, файл копируется в каждый узел, который задействован в вашей задаче, что явно требует пропускной способности. Кроме того, обычно, если вы хотите файл в распределенном кеше, вы сохраните файл в памяти, поэтому вам придется принять это во внимание.

Что касается вашего случая - да, это байты. Размер составляет около 86 МБ, что отлично подходит для распределенного кеша. Все, что должно быть в пределах пары сотен МБ, должно быть, должно быть.

+0

я хотел бы добавить, что он только получает копируется в узлы, которые фактически выполняют задачу для ваших задание - т. е. задание является одной задачей карты, оно будет скопировано только на узел, который выполняет эту задачу, а не ** каждый ** узел, как вы заметили. –

+0

@ChrisWhite Вы правы, и я почему-то не думал сделать это различие. Отредактировано и добавлено в ответ. – TC1

0

Размер распределенного кэша по умолчанию равен 10 ГБ. Но лучше хранить несколько МБ данных в Distributed Cache. В противном случае это повлияет на производительность вашего приложения.

1

В дополнение к ответу ТС1, также рассмотреть следующие вопросы:

  • Когда/где вы собираетесь использовать файл (ы) и насколько велик ваш кластер?
    • Во многих картах, один редуктор (или небольшое количество) сценариев, где вам нужен только файл в редукторе, я бы посоветовал ему как можно скорее просто вытащить файл самостоятельно в редукторе (метод настройки) , а не излишне для каждого узла задачи, на котором работают ваши мапперы - особенно, если файл большой (это зависит от того, сколько узлов у вас есть в вашем кластере)
  • Сколько файлов вы кладете в кеш?
    • Если по какой-то причине у вас есть 100 файлов для распространения, вам лучше их разгрузить и поместить tar-файл в архивы распределенного кеша (кеш-память будет заботиться о том, чтобы развернуть файл для вас). То, что вы пытаетесь избежать, заключается в том, что если вы не поместили их в кеш-хранилище, а загрузили их напрямую из HDFS, вы можете столкнуться с сценарием, в котором у вас есть 1000 карт и редукторов, пытающихся открыть тот же файл, который могу вызвал слишком много открытых файлов проблем для узла имени и узлов данных