2014-02-18 4 views
1

Кажется, что DistributedCache пригодится, когда вам нужно поместить небольшой объем данных, который будет часто использоваться вашим картографом/редуктором для DistributedCache. Но в некоторых случаях данные, которые вы хотите поместить в ваш картограф, будут довольно большими, скажем, более 300 МБ. Что бы вы сделали в таких случаях? Какова была бы альтернатива распределенному кэшу в таком сценарии?Какова альтернатива DistributedCache в программе MapReduce?

ответ

1
  1. Распределенный кеш по умолчанию составляет несколько гигабайт, поэтому 300 МБ не обязательно является проблемой. (Вы можете отрегулировать размер в mapred-site.xml.) Получение 300 МБ к узлу все равно может оказаться полезным, если ваша работа выполняется часто, и в кэше мало другого оттока.

  2. Другой вариант - разместить ваши файлы на HDFS и прочитать задания оттуда. Для этого вы можете использовать API-интерфейсы org.apache.hadoop.fs.FileSystem.

Чтобы выбрать, какой из них лучше, вероятно, вы должны попробовать оба способа и увидеть, что дает лучшую ввода/вывода и номера во время выполнения (включая воздействие на другие рабочие места). Это может зависеть от того, насколько часто выполняется ваша работа, сколько других вещей в кеше, соотношение карты/уменьшения и т. Д.

+0

Благодарим вас за комментарий. Очень проницательный! – Clark

+0

Присоединение на стороне карты и соединение сбоку могут быть альтернативным вариантом, если размер файла больше, чем у GB, я думаю. Прокомментируйте, пожалуйста. – Ravikanth

Смежные вопросы