В чем разница между работой с кластерами на spark и параллельными операциями на локальных?

#apache-spark #pyspark #bigdata #amazon-emr

#apache-искра #пыспарк #bigdata #amazon-emr

Вопрос:

Я некоторое время изучал большие данные. И я использую, на самом деле пытаюсь использовать PySpark:). Но в какой-то момент я действительно запутался. Например, как я знаю, spark в зависимости от его опции RDD автоматически выполняет распараллеливание. И поэтому почему мы используем кластеры, кроме использования этой локальной распараллеливания? Или мы используем кластерный режим для действительно больших данных(я не говорю о режиме развертывания, я говорю только о 2, 3 или 4 ведомых устройствах)? На самом деле я представляю себе такую распараллеливание, например, у моего компьютера 12 ядер, поэтому я думаю, что эти 12 ядер являются отдельными компьютерами, и поэтому у меня 12 компьютеров. Поэтому из-за этой мысли мне кажется ненужным использовать кластер, например, в emr один главный узел и 2 подчиненных узла. И когда у меня есть 2 раба-это распараллеливание, продолжайте работать и с ними. Например, у меня есть 2 подчиненных устройства, и у каждого из них 12 ядер, как у моего компьютера, и так ли у меня 24 ядра в этой ситуации? Если это сложно, а название неправильное или несовершенное, я могу отредактировать. Заранее спасибо.

Ответ №1:

  • Это правда, что процессор определяет единицу параселлизации в spark.
  • Spark может одновременно обрабатывать 1 задачу на процессор
  • Таким образом, независимо от того, есть ли у вас одна машина с 12 ядрами или 12 машин с 1 ядром каждая, вы сможете обрабатывать 12 задач spark одновременно.

Есть несколько причин, по которым лучше иметь несколько машин, а не одну огромную машину. Но вы, вероятно, не заметите этого, пока не начнете масштабироваться немного выше 12 ядер

1. Масштабируемость

  • Проще масштабировать горизонтально (добавляя больше машин), чем масштабировать вертикально (увеличивая машины).
  • Возьмите свою 12 — ядерную машину-скажем, вы с удовольствием используете 12 ядер в течение года, а затем понимаете, что ваша работа стала намного больше, и теперь вы хотите работать с 24 ядрами. Приятно иметь возможность просто купить еще одну 12-ядерную машину и соединить 2 вместе, вместо того, чтобы покупать полностью новую 24-ядерную машину.
  • Это усугубляется по мере увеличения масштаба. Если у вас кластер с 2000 ядрами и вам нужно еще 10 ядер, вы бы предпочли добавить одну машину с 10 ядрами, а не покупать новую машину с ядрами 2010 года (если они вообще существуют).
  • То же самое относится и к другим ресурсам, таким как оперативная память

2. Облачные цены

  • С помощью облачных сервисов, таких как EMR, вы можете выполнять свою работу с некоторыми сверхнадежными экземплярами по требованию (expesive) наряду с некоторыми сверхдешевыми спотовыми экземплярами, которые можно в любое время перевести в автономный режим.
  • Общий шаблон состоит в том, чтобы иметь главный узел и 2 основных узла по требованию, которые будут работать независимо ни от чего. Затем дополните это, скажем, 20 основными узлами со спотового рынка, которые могут быть переведены в автономный режим

Встречный аргумент

Кстати, есть также некоторые причины, по которым большее количество машин может означать больше проблем

  1. Кластерами с одним узлом проще управлять
  2. Теоретически должно быть быстрее перемещать данные между разделами, если все ваши разделы расположены на одном компьютере

Если вы используете 12 ядер, я думаю, вам было бы гораздо лучше использовать искру с одним узлом, чем пытаться настроить кластер машин

Комментарии:

1. Спасибо вам за ваш ответ. Это действительно информативно.

Ответ №2:

Компьютер-это не просто количество его ядер. У него также есть другие ресурсы, такие как оперативная память и диск.

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

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

Наконец, больше машин действительно означает больше процессора, что означает больше параллельных вычислений, чем вы получили бы только от одного работника.

Комментарии:

1. Спасибо вам за ваш ответ. Это действительно информативно.