2013-10-04 5 views
1

EMR Новичок Оповещение:EMR - создать пользовательский журнал из журнала

У нас есть большие журналы, содержащие данные об использовании нашего веб-сайта. Клиенты аутентифицируются и идентифицируются по их идентификатору клиента. Всякий раз, когда мы пытаемся устранить проблему с клиентом, мы просматриваем все журналы (используя критерии customer_id в качестве критериев поиска) и передаем результаты в файл. Затем мы используем файл результатов для устранения этой проблемы. Мы думали об использовании EMR для создания файлов журнала для каждого клиента, поэтому нам не нужно создавать файл журнала для каждого клиента по требованию. EMR будет делать это каждый час для каждого клиента.

Мы смотрели потоки EMR и создали небольшой скрипт ruby ​​для этапа карты. Теперь у нас есть большой список ключей/значений (userid, logdata).

Однако мы застряли на шаге уменьшения. В идеале я хотел бы сгенерировать файл со всеми logdata конкретного клиента и поместить его в ведро S3. Может ли кто-нибудь указать нам, как мы это сделаем? Является ли EMR даже той технологией, которую мы хотим использовать?

Спасибо, Бенно

ответ

0

Один из вариантов будет использовать редуктор идентичности, предусматривающим число уменьшить задачи через свойство заранее. Вы приходите к фиксированному числу файлов, в которых будут записываться все записи для пользователей пользователей. Чтобы найти нужный файл для поиска конкретного пользователя, хешируйте идентификатор пользователя, чтобы определить нужный файл и выполнить поиск в нем.

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

0

Взгляните на Splunk. Это инструмент корпоративного уровня, предназначенный для обнаружения паттернов и связей в больших количествах текстовых данных. Мы используем его для мониторинга журналов веб-приложений и приложений для большого веб-сайта. Просто позвольте Splunk индексировать все и использовать поисковую систему для бурения данных - предварительная обработка не требуется.

Просто натыкался на это: Getting Started with Splunk as an Engineer

0

Не смотря на свой код, да, это, как правило, довольно легко сделать в MapReduce; лучший сценарий здесь - если у вас много, много пользователей (кто этого не хочет?) и несколько ограниченное количество взаимодействий на пользователя.

Абстрактно, ваши входные данные, вероятно, выглядит примерно так:

File 1: 
1, 200, "/resource", "{metadata: [1,2,3]}" 

File 2: 
2, 200, "/resource", "{metadata: [4,5,6]}" 
1, 200, "/resource", "{metadata: [7,8,9]}" 

Где это просто журнал пользователя, состояния HTTP, пути/ресурсов, а также некоторые метаданные. Лучше всего на самом деле сосредоточить внимание только на вашем картографе при очистке данных, преобразовании его в формат, который вы можете использовать, и испускании идентификатора пользователя и всего остального (возможно, включая идентификатор пользователя снова) в качестве пары ключ/значение.

Я не очень знаком с Hadoop Streaming, но по документам: By default, the prefix of a line up to the first tab character is the key, так это может выглядеть примерно так:

1\t1, 200, "/resource", "{metadata: [7,8,9]}" 

Обратите внимание, что 1 повторяется, как вы можете использовать его в выход, а не только как часть тасования.Вот где обработка переходит с одного картографов обработки File 1 и File 2 к somethig больше как:

1: 
1, 200, "/resource", "{metadata: [1,2,3]}" 
1, 200, "/resource", "{metadata: [7,8,9]}" 

2: 
2, 200, "/resource", "{metadata: [4,5,6]}" 

Как вы можете видеть, что мы уже в основном сделали наш для каждого пользователя Grep! Речь идет только о наших окончательных преобразованиях, которые могут включать в себя сортировку (так как это по существу данные временного ряда). Вот почему я сказал ранее, что это будет намного лучше для вас, если у вас много пользователей и ограниченное взаимодействие с пользователем. Сортировка (или отправка по сети!) Тонн МБ на пользователя не будет особенно быстрой (хотя потенциально еще быстрее, чем альтернативы).

Чтобы судить, это зависит как от масштаба, так и от прецедента, но, как правило, да, это проблема, хорошо подходящая для отображения/уменьшения в целом.

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