Как MapReduce является хорошим методом проанализировать http журналы сервера?

Вы не можете изменять строки; они неизменны. Вы можете сделать это вместо этого:

txtBox.Text = txtBox.Text.Substring(0, i) + "TEXT" + txtBox.Text.Substring(i);
7
задан Nicolas 2 June 2009 в 11:50
поделиться

2 ответа

Можно ли применить концепцию MapReduce к анализу веб-журналов?

Да.

Вы можете разделить свой файл журнала hudge на части, скажем, по 10 000 или 1 000 000 строк (что бы ни было подходящим фрагментом для вашего типа файла журнала - для файлов журнала apache я бы выбрал большее число), скормить их некоторым картографам, которые извлекут что-то конкретное (например, браузер, IP-адрес, ..., имя пользователя, ...) из каждой строки журнала, затем уменьшите, подсчитав количество появлений каждой из них (упрощенно):

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

Вы можете извлекать браузеры, игнорируя версию, используя операцию map, чтобы получить этот список:

FireFox
FireFox
FireFox
IE

Затем уменьшите, чтобы получить это: FireFox, 3 IE, 1

Является ли MapReduce самым умным способом сделать это?

Это умно, но вам нужно быть очень большим, чтобы получить какую-либо выгоду ... Разделение ПЕТАБАЙТОВ журналов.

Для этого я бы предпочел использовать очереди сообщений и согласованный механизм хранения (например, базу данных) с клиентами обработки, которые извлекают работу из очередей, выполняют задание и отправляют результаты в другую очередь, с заданиями, которые не выполняются в какой-то период времени, и доступными для обработки другими. Эти клиенты будут небольшими программами, которые делают что-то особенное.

Вы можете начать с 1 клиента и расширить до 1000 ... У вас даже может быть клиент, который запускается в качестве заставки на всех ПК в локальной сети и запускает 8 клиентов на ваших 8-ядерных серверах, 2 на ваших двухъядерных ПК ...

С Pull: у вас может быть 100 или 10 работающих клиентов, На многоядерных машинах может работать несколько клиентов, и все, что клиент завершит, будет доступно для следующего шага. И вам не нужно выполнять какое-либо хеширование или назначение, чтобы работа была выполнена. Он на 100% динамический.

http://img355.imageshack.us/img355/7355/mqlogs.png

Как бы вы разделили файлы веб-журнала между различными вычислительными экземплярами?

По количеству элементов или строк, если это текстовый файл журнала.

Чтобы протестировать MapReduce, я хотел бы предложить вам поиграть с Hadoop.

16
ответ дан 6 December 2019 в 11:52
поделиться
  • Можно ли применить концепцию MapReduce к анализу веб-журналов?

Конечно. Какие данные вы храните?

  • Является ли MapReduce самым умным способом сделать это?

Он позволил бы вам выполнять запросы одновременно на многих обычных машинах, так что да, это может быть полезно. В качестве альтернативы вы можете попробовать Sharding .

  • Как бы вы разделили файлы веб-журнала между различными вычислительными экземплярами?

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

1
ответ дан 6 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: