2015-10-26 4 views
-1

Я новичок в распределенных системах и поставил задачу распределить часть существующего кода Python. Цель состоит в том, чтобы рассматривать код как двоичные или библиотеку и автор два разных видов оберток:Оптимальная структура для распространения программы Python по n ядрам

  • Упаковочных 1: получает большие потоки данных из среды, вызывает код Python выполнить некоторые вычисления на он, а затем разбивает его и отправляет куски данных (и некоторые другие вещи) рабочим узлам. Выполняется в главном узле.
  • Обертка 2: получает эти куски данных, вызывает код Python сделать некоторые вычисления на них, и когда конкретное условие удовлетворяется, передает данные обратно к главному узлу.

Процесс повторяется до тех пор, пока дополнительные данные не попадут на главный узел. Это может быть проиллюстрировано на следующем рисунке: A high-level view of the desired distributed architecture.

Так что существует как

(1) Потребность в общении между рабочими и мастер-узла, а также

(2) необходимость вызова существующего кода Python.

Также важно, чтобы вся инфраструктура рассматривала понятие «узел» агностически, так как его нужно запускать на персональном компьютере, где узлы приравнивают ядра (физические или виртуальные) или кластеры, где узлы могут быть целые компьютеры с несколькими ядрами. Поэтому я ищу технологию, которая может помочь мне достичь этого множества целей. Я уже изучаю Apache Spark, но я не совсем уверен, что Spark позволит мне выполнить код Python в упрощенном виде и искал идеи.

+1

Итак, каков ваш вопрос и почему вы дали ему искровой ярлык? – eliasah

+0

Мой вопрос заключается в том, считает ли сообщество, что Spark станет подходящей платформой для разработки этого приложения. Как я уже упоминал, я совершенно новичок в распределенных приложениях, и я хочу выполнить информированный поиск на пространстве возможных технологий. Я бы не хотел принимать решение о Pyspark, только чтобы понять, что он не может просматривать узлы в абстрактной форме или что он не позволит мне импортировать базовые библиотеки Python, необходимые для распространения кода. Если предполагается, что тег «apache-spark» лишний, его можно удалить. – Jason

+0

apache-spark предназначен для крупномасштабной обработки данных. Поэтому вы должны спросить себя, насколько велика ваша обработка данных на самом деле? – Samuel

ответ

0

Заканчивать celery как легкий вариант:

сельдерея: Task Queue Распределенная

Сельдерей является асинхронной задача очереди очереди/задания на основе распределены передачи сообщений. Он ориентирован на работу в режиме реального времени , но также поддерживает планирование. Исполнение единиц, называемых задачами, выполняется одновременно на одном или нескольких рабочих серверах с использованием многопроцессорности, Eventlet или gevent. Задачи могут выполнять асинхронно (в фоновом режиме) или синхронно (подождите до готовности).

Сельдерей используется в производственных системах для обработки миллионов задач в день.

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