Состояние карты - сокращение на Appengine?

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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