Практикум 1.2. Построение запросов MapReduce к журналу транзакций веб-сайта

1.2. Построение запросов MapReduce к журналу транзакций веб-сайта

Цель: проанализировать данные журнала транзакций веб-сайта.

Задачи

  • 1. Найти число посещений страницы "/assets/js/the-associates.js”.
  • 2. Найти число посещений ір-адреса 10.99.99.186.
  • 3. Найти самую посещаемую страницу и число её визитов.
  • 4. Придумать и реализовать три новых интегрированных запроса, содержащих, как минимум, три условия с логическими связками.

Ход выполнения

Данные для выполнения практикума находятся в файле access_log, который размещен по адресу

/home/training/udacity_training/data/access_log.gz. Откройте домашнюю папку “training’s Home” (рис. 1.7-1.8). •1г CiDudeni4kfa?fTy? Ггаіпіпо-УМ-4 ’ 1 с - УМ.-, дгв 14 Рілугч Nc

Player” И ’ dj + 1Д Q

•»* Application» Place» System • g

— Домашняя папка на рабочем столе

Рисунок 1.7 — Домашняя папка на рабочем столе

Перейдите в папку udacity_training —> data, откройте архивный файл accessjog.gz (рис. 1.9).

Открытая домашняя папка

Рисунок 1.8 - Открытая домашняя папка

Содержимое архива

Рисунок 1.9 - Содержимое архива

Содержимое архива переместите в папку data и поместите их в HDFS.

Файл accessjog содержит информацию об обращениях к вебстраницам. Файл представлен в формате CLG (The Common Log Format) и имеет структуру %h %l %u %t "%r" %>s %b, где

  • • %h - ІР-адрес клиента;
  • • %1 - определить клиента или если недоступно;
  • • %и - имя пользователя или клиента или если недоступно;
  • • %t - время окончания обработки запроса сервером. Форма [день/месяц/год:час:минуты:секунды:временная зона];
  • • %г - строка запроса, пришедшая от клиента (в двойных кавычках). Он содержит метод, путь, строку запроса, а также протокол или запрос;
  • • %>s - это HTTP-код состояния, который сервер отправляет клиенту.

Вы увидите в основном коды состояния 200 (ОК - запрос выполнен успешно), 304 (не изменено) и 404 (не найдено);

• %Ь - размер объекта, возвращаемого клиенту, в байтах. Он будет «-» в случае кода состояния 304.

Пример содержимого файла accessjog

10.223.157.186 - - [15/Jul/2009:15:50:35 -0700] "GET

/assets/js/lowpro.js HTTP/1.1" 200 10469

Задача 1. Найти число посещений страницы “/assets/js/the-associates.js”.

Для решения задачи модифицируйте исходные файлы mapper.py и reducer.py.

Реализация Mapper:

#!/usr/bin/python

import sys

for Line in sys.stdin:

data = line.stripO

if data.find('/assets/js/the-associates.js') != -1:

print "(0}".format(1)

Реализация Reducer:

#!/usr/bin/python

import sys

count = 0

for line in sys.stdin:

data_mapped = line.stripO

count += int(data_mapped)

print count

Задача 2. Найти число посещений ір-адреса 10.99.99.186.

Для решения задачи модифицируйте исходные файлы mapper.py и reducer.py.

Реализация^Іаррег:

#1/usr/bin/python import sys

for line in sys.stdin:

data = line.strip ().split (" ") if '10.99.99.186' in data:

_________print "(0)".format(1)_______________________________________________________

Реализация Reducer:__________________________________________

#1/usr/bin/python import sys count = 0

for line in sys.stdin:

data_mapped = line.strip()

count += int(data_mapped)

print count__________________________________________________________________

Задача 3. Найти самую посещаемую страницу и число её визитов. При этом исключите часть адреса, если она есть в адресах веб-страниц: “http://www.the-associates.co.uk”

Для решения задачи модифицируйте исходные файлы mapper.py и reducer.py.

_____Реализация Mapper:_________________________________________

#1/usr/bin/python import sys import re

for line in sys.stdin:

data = line.strip ().split (" ")

data[6] = re.sub('http://www.the-associates.co.uk','',data[6])

_____print("{0} {1)".format(data[6], 1) )__________________________________________________

Реализация Reducer:

#!/usr/bin/python import sys count = 0 page = None pop_page_hits = 0 popular_page = None for line in sys.stdin:

data = line.strip().split(" ") if len(data) != 2: continue

currPage, currCount = data if page:

if page 1= currPage:

#print("{0} {1}".format(page, count)) if count > pop_page_hits: pop_page_hits = count popular_page = page

count = 1

page = currPage else:

count += int(currCount) else:

page = currPage count += int(currCount)

print("{0} (1format(popular page, pop page hits))

Задача 4. Придумать и реализовать три новых интегрированных запроса, содержащих, как минимум, три условия с логическими связками.

Результаты внести в отчет.

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

Для реализации MapReduce программ необходимо найти число посещений на основе url адреса и ip ресурса, а также найти самую посещаемую страницу, подсчитав число ее визитов.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ   След >