Может ли концепция MapReduce действительно применяться для анализа блогов?
Да.
Вы можете разбить ваш лог-файл hudge на куски, скажем, 10000 или 1000000 строк (что бы ни было хорошим кусочком для вашего типа лог-файла - для лог-файлов 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
Вы можете извлечь браузеры, игнорируя версию, используя операцию карты, чтобы получить этот список:
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.