Amazon MapReduce с помощью cronjob + API - PullRequest
3 голосов
/ 21 мая 2011

У меня есть веб-сайт, настроенный на экземпляре EC2, который позволяет пользователям просматривать информацию из 4 своих социальных сетей.

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

Первоначально у нас была задача cron, которая проходила через каждого пользователя и выполняла необходимые вызовы API, а затем сохраняла данные в БД (экземпляр amazon rds).

Эта операция должна занимать от 2 до 30 секунд на человека, что означает, что для ее обновления 1 на 1 потребуется несколько дней.

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

Смогу ли я дать файл .sql в MapReduce со всеми записями, которые я хочу обновить +сценарий, который сообщает MapReduce, что делать с каждой записью и обрабатывать ли их все одновременно?

Если нет, то как лучше всего это сделать?

Спасибо за вашепомогите заранее.

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Я предполагаю, что данные каждого пользователя не зависят от данных других пользователей, что мне кажется логичным.Если это не так, пожалуйста, проигнорируйте этот ответ.

Поскольку у вас есть взаимно независимые данные (то есть данные каждого пользователя независимы от данных других пользователей), нет необходимости использовать MapReduce.MR - это всего лишь парадигма в программировании, которая упрощает манипулирование данными, когда данные не независимы (карта подготавливает данные, затем идет фаза сортировки, а затем сокращается выборка результатов из отсортированных записей).

В вашем случае, если вы хотите использовать больше компьютеров, просто распределите нагрузку между ними - каждый компьютер должен обрабатывать ~ 10000 пользователей в час (очень грубая оценка).Затем пользователи могут быть заранее распределены по компьютерам или их можно запросить по 1000 или более раз таким образом, чтобы машины, которые заканчивают работу раньше, могли обрабатывать больше пользователей.

НО есть дополнительный бонуспри использовании инфраструктуры MR (такой как Hadoop), даже если вы используете только одну фазу (только карта)Он выполняет обработку ошибок для вас (сбой узлов, сбой заданий, ...) и заботится о распределении входных данных между узлами.

Я не уверен, стоит ли устанавливать MR все усилия, чтобы установитьэто зависит от вашего предыдущего опыта - YMMV.

1 голос
/ 24 мая 2011

Если мое понимание верно. Если это приложение будет реализовано как MapReduce, все обработки выполняются на этапе Map и могут привести к простому выводу результата этапа Map. Поэтому, если бы я реализовал это, я бы просто разделил задание на несколько экземпляров EC2, каждый из которых обрабатывал бы определенный диапазон записей в ваших данных sql. Это сделало предположение, что у вас есть хорошее представление о том, как разделить данные на разные экземпляры. Преимущество заключается в том, что вам не нужно платить за цену Elastic MapReduce и избегать возможных накладных расходов MapReduce.

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