Если данные подходят для одной машины, имеет смысл использовать Spark?

У меня есть 20 ГБ данных, требующих обработки, все эти данные соответствуют моей локальной машине. Я планирую использовать параллельные комбинации Spark или Scala для реализации некоторых алгоритмов и умножения матриц на эти данные.

Поскольку данные подходят для одной машины, я должен использовать Scala параллельные коллекции?

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

Spark будет иметь накладные настройки параллельных задач, хотя он будет работать только на одной машине, поэтому в этом случае избыточные ресурсы избыточны?

1 ответ

Трудно предоставить некоторые неочевидные инструкции, например, если у вас есть данные и не доходит до 80% памяти и..., то используйте локальный режим. Сказав это, есть несколько точек, которые, в общем, могут заставить вас использовать искру, даже если ваши данные соответствуют одной машинной памяти:

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

В вашем конкретном случае

так как все данные находятся как можно ближе к процессору Spark не дают значительного улучшения производительности

Конечно, нет, Spark не волшебство вуду, которое каким-то образом может приблизить ваши данные к процессору, но оно может помочь вам масштабировать среди машин, поэтому процессоры (точка № 1)

У Spark будут накладные настройки параллельных задач, хотя это будет работать только на одной машине, поэтому эти накладные расходы избыточны в этот случай?

Я могу казаться капитаном очевидным, но

  • Учитывайте № 2 и № 3, вам нужны они? Если да, идите искру или что-то еще.
  • Если нет, внесите свою обработку в тупик (параллельные коллекции)
  • Профиль и посмотрите. Связана ли ваша обработка с ЦП? Можете ли вы ускорить его, без особых ухищрений? Если нет, исходите.

Существует также [нахальный] пункт 4) в списке Почему я должен использовать Spark?. Это шумиха - Spark - очень сексуальная технология, которую легко "продать" своим разработчикам (это передний край больших данных) и компании (ваш босс, если вы строите свой собственный продукт, ваш клиент в случае, если вы создаете продукт для кого-то другого).

licensed under cc by-sa 3.0 with attribution.