2014-09-12 2 views
1

У меня есть процесс, который идентифицирует объект в ведре S3, который должен быть преобразован с использованием нашего (довольно упрощенного) пользовательского кода Java. Выход этого преобразования записывается в другой префикс в ведро S3. Так что это просто, изолировал:Как распараллеливать обработку с S3 на S3

  1. Прочитайте входной поток объекта S3
  2. Преобразование объекта
  3. Записывает вывод в качестве нового объекта S3 или объекты

Этот процесс вероятно, всего несколько тысяч строк данных на объекте S3, но сотни (возможно, тысяч) объектов. Каков хороший подход к запуску этого процесса на нескольких машинах? Похоже, что я могу использовать Kinesis, EMR, SWF или что-то, что я готовлю самостоятельно. Каждый подход имеет довольно кривую обучения. С чего начать?

+0

. мы хотим обработать его как можно быстрее. Когда ситуация начинает скатываться, это может быть около 100 ГБ/пробег. Это один и тот же тип данных для каждой записи. – user3923124

ответ

0

Учитывая, что процесс пакетной обработки и объем будут расти (для «всего» 100 ГБ это может быть излишним), Amazon Elastic Map Reduce (EMR) кажется приятным взятым для работы. Используя EMR, вы можете обрабатывать данные на своих страницах Hadoop Map Reduce, Hive query или Pig Scripts (и другие), считывая данные непосредственно из S3. Кроме того, вы можете использовать S3DistCP для передачи и сжатия данных параллельно и с кластером, если это необходимо.

Существует бесплатный онлайн вводный курс для ОГО и Hadoop на http://aws.amazon.com/training/course-descriptions/bigdata-fundamentals/

Кроме того, вы можете взять бесплатную лабораторию на https://run.qwiklabs.com/focuses/preview/1055?locale=en

0

Вы можете попробовать Amazon SQS очереди каждую работу, а затем обрабатывать их параллельно на (он имеет гораздо более легкую кривую обучения, чем Amazon EMR/SWF).

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

Кроме того, если ваш код обработки не использует все ресурсы компьютера, на котором он запущен, вы можете загрузить & обрабатывать несколько файлов параллельно на том же компьютере, что и S3, вероятно, справится с нагрузкой просто (с несколькими одновременными запросами).

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