2013-09-03 3 views

ответ

13

Я бы предпочел спросить , когда mapreduce - не подходящий выбор? Я не думаю, что вы увидите какой-либо недостаток, если используете его по назначению. Сказав, что есть определенные случаи, когда MapReduce не является подходящим выбором:

  • в режиме реального времени обработки.
  • Это не всегда очень легко реализовать все и вся как программа MR.
  • Когда ваши промежуточные процессы должны разговаривать друг с другом (задания выполняются изолированно).
  • Когда ваша обработка требует большого количества данных shuffled по сети.
  • Когда вам нужно обрабатывать потоковые данные. MR лучше всего подходит для пакетного процесса огромное количество данных, которые вы уже имеете с собой.
  • Когда вы можете получить желаемый результат с помощью автономной системы. Очевидно, что менее сложно настраивать и управлять автономной системой по сравнению с распределенной системой.
  • Если у вас есть OLTP. MR не подходит для большого количества коротких онлайн-транзакций.

Может быть несколько других случаев. Но главное, насколько хорошо вы его используете. Например, вы не можете ожидать, что задание MR даст вам результат в течение нескольких мс. Вы не можете считать это своим недостатком. Просто вы используете его не в том месте. И это верно для любой технологии, ИМХО. Короче говоря, подумайте, прежде чем действовать.

Если вы все еще хотите, вы можете принять вышеуказанные пункты как недостатки MapReduce :)

HTH

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

  2. Namenode отслеживает метаданные всех файлов в вашей распределенной файловой системе. Я читаю книгу хаупов (Hadoop в действии), и он упомянул, что Yahoo оценивает метаданные примерно в 600 байт на файл. Это означает, что если у вас слишком много файлов, у вашего Namenode могут возникнуть проблемы.

  3. Если вы не хотите использовать потокового API вы должны написать программу в Java языка. Я, например, сделал перевод с C++. Это имеет некоторые побочные эффекты, например, Java имеет большие накладные расходы по сравнению с C. Поскольку мое программное обеспечение связано со строками, это какой-то недостаток.

Чтобы быть честным, мне действительно пришлось много думать, чтобы найти недостатки. Решаемые для меня проблемы mapreduce были намного больше, чем проблемы, которые он вводил. Этот список определенно не является полным, всего несколько первых замечаний. Очевидно, вы должны иметь в виду, что он ориентирован на Big Data, и именно там он будет работать в лучшем виде. Там есть множество других инфраструктур распространения с их собственными характеристиками.

+0

NN не имеет отношения к MR. – Tariq

+0

Это ограничение архитектуры, на которой работает mapreduce, поэтому нужно помнить о том, что вы правы, это не обязательно должно быть строго связано с MR – DDW

+0

Mapreduce может работать где угодно, а не только HDFS. И NN специфичен для HDFS. Вы увидите проблему с метаданными, если вы храните много очень маленьких файлов в HDFS, что опять же не очень эффективно используется платформой Hadoop. Но я согласен. Что бы вы ни говорили, это тоже правильно. Вопрос был специфичен для MR Framework, поэтому я решил упомянуть об этом. – Tariq

1
  1. Вам нужно пересмотреть/переписать тривиальные операции, такие как соединения, фильтр для достижения в карте/уменьшить шаблоны/ключ/значение
  2. MapReduce предполагает, что работа может быть распараллеливание. Но это может быть не для всех заданий обработки данных.
  3. Он тесно связан с Java, конечно, у вас есть Свиньи и Улей для спасения, но вы теряете гибкость.
+0

Вы всегда можете использовать потоковое воспроизведение, если вы не хотите использовать java. – Tariq

3

Вот некоторые usecases где MapReduce не работает очень хорошо.

  1. Если вам нужен ответ быстро. например скажем < несколько секунд (используйте поток обработки, CEP и т. д.)
  2. Обработка графиков
  3. Комплексные алгоритмы, например. некоторые алгоритмы машинного обучения, такие как SVM, а также см. 13 drawfs (Пейзаж параллельных вычислений: взгляд из Беркли)
  4. Итерации - когда вам нужно обрабатывать данные снова и снова. например KMeans - используйте Spark
  5. Когда фаза карты генерирует слишком много ключей. Затем сортировка берет навсегда.
  6. Объединение двух больших наборов данных со сложными условиями (равный регистр обрабатывается посредством хэширования и т. Д.)
  7. Операции с учетом состояния - например. оценивать конечный автомат Каскадные задачи один за другим - используя Hive, Big может помочь, но много накладных расходов перечитывать и анализировать данные.
Смежные вопросы