Состояние Map-Reduce на Appengine? - PullRequest
       4

Состояние Map-Reduce на Appengine?

14 голосов
/ 07 декабря 2011

Существует appengine-mapreduce , который, кажется, является официальным способом сделать что-то в AppEngine. Но, похоже, нет документации, кроме нескольких взломанных вики-страниц и длинных видео. Есть утверждения, что lib поддерживает только шаг map. Но источник указывает, что есть также реализации для shuffle .

Версия этой библиотеки appengine-mapreduce, кажется, также включена в SDK, но она не предназначена для публичного использования. Таким образом, вы, как правило, должны загрузить библиотеку дважды за время выполнения.

Тогда есть appengine-pipe . «Основной вариант использования API - это соединение различных MapReduces App Engine в вычислительный конвейер». Но в библиотеке appengine-mapreduce также присутствует связанный с конвейером код.

Так с чего мне начать выяснять, как все это сходится? Из какой библиотеки мне звонить из моего проекта. Есть ли достойная документация по appengine-mapreduce, кроме анализа логов изменений?

Ответы [ 2 ]

11 голосов
/ 07 декабря 2011

Какую библиотеку вызывать из моего проекта.

Они служат разным целям, и вы не предоставили подробных сведений о том, что вы пытаетесь сделать.

Самым фундаментальным уровнем здесь является очередь задач, которая позволяет планировать фоновую работу, которая может быть сильно распараллелена. Это разветвление. Допустим, у вас был список из 1000 веб-сайтов, и вы хотели проверить время отклика для каждого из них и отправить электронное письмо для любого сайта, загрузка которого занимает более 5 секунд. Запустив их как параллельные задачи, вы сможете выполнить работу намного быстрее, чем если бы вы последовательно проверили все 1000 сайтов.

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

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

API MapReduce упаковывает API-интерфейс Pipeline, чтобы упростить определенный тип распределенного рабочего процесса: отображение результатов части работы в набор пар ключ / значение и сокращение нескольких наборов результатов в один путем объединения их значений.

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

0 голосов
/ 31 мая 2014

Официальная документация здесь: https://developers.google.com/appengine/docs/java/dataprocessing/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...