Amazon MapReduce лучшие практики для анализа журналов - PullRequest
8 голосов
/ 23 марта 2012

Я анализирую журналы доступа, сгенерированные Apache, Nginx, Darwin (сервер потокового видео) и собираю статистику для каждого доставленного файла по дате / рефереру / юзерагенту.

Тонны журналов, генерируемых каждый час, и это число, вероятно, будет резко увеличено в ближайшем будущем - поэтому обработка такого рода данных распределенным способом через Amazon Elastic MapReduce звучит разумно.

Прямо сейчас я 'Я был готов с мапперами и редукторами для обработки моих данных и протестировал весь процесс со следующим потоком:

  • загрузил мапперы, редукторы и данные в Amazon S3
  • настроил соответствующую работу и обработал ее
  • успешно загрузил агрегированные результаты из Amazon S3 на мой сервер и вставил их в базу данных MySQL, запустив скрипт CLI

Я сделал это вручную в соответствии с тысячами руководств, которые можно найти на GoogleИнтернет про Amazon ERM.

Что мне делать дальше?Как лучше всего автоматизировать этот процесс?

  • Должен ли я управлять Amazon EMR jobTracker через API?
  • Как я могу убедиться, что мои журналы не будут обрабатываться дважды?
  • Каков наилучший способ перемещения обработанных файлов в архив?
  • Каков наилучший подход для вставки результатов в PostgreSQL / MySQL?
  • Как следует размещать данные для заданий вкаталоги ввода / вывода?
  • Должен ли я каждый раз создавать новое задание EMR с помощью API?
  • Каков наилучший подход для загрузки необработанных журналов в Amazon S3?
  • МожноКто-нибудь поделится своими настройками потока обработки данных?
  • Как контролировать загрузку файлов и выполнение заданий?

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

UPD: Просто для уточнения здесь единственный заключительный вопрос:

Каковы лучшие практики?советы по обработке логов на основе Amazon Elastic MapReduce?

Похожие записи:

Получение данных из Elastic MapReduce HDFS

1 Ответ

3 голосов
/ 14 апреля 2012

Это очень очень открытый вопрос, но вот некоторые соображения, которые вы могли бы рассмотреть:

  • Использование Amazon SQS: это распределенная очередь, и она очень полезна для управления рабочим процессом.процесс, который записывает в очередь, как только журнал становится доступным, и другой, который читает из него, обрабатывает журнал, описанный в сообщении очереди, и удаляет его, когда завершает обработку.Это обеспечит обработку журналов только один раз.
  • Apache Flume, как вы упомянули, очень полезен для агрегирования журналов.Это то, что вы должны учитывать, даже если вам не нужно в режиме реального времени, поскольку это дает вам, по крайней мере, стандартизированный процесс агрегирования.
  • Amazon недавно выпустила SimpleWorkFlow.Я только начал изучать это, но это звучит многообещающе для управления каждым шагом вашего конвейера данных.

Надеюсь, что это даст вам некоторые подсказки.

...