Применение HIVE на примере анализа лога

Для примера беру лог squid:

[21/Dec/2016:03:13:08 +0300] 502 89.111.178.135 TCP_MISS/200/200 64880 POST http://venera-plus.ru/xmlrpc.php venera-plus.ru 91.218.228.248 text/xml

[21/Dec/2016:03:13:08 +0300] 98 193.232.145.36 TCP_MISS/301/301 203 GET http://dvmg.ru/check.htm?id=1b3cb64ad33846f19387b761ac056a7b dvmg.ru 91.195.240.135 -

[21/Dec/2016:03:13:08 +0300] 215 89.111.185.190 TCP_MISS/200/200 582 GET http://atcdbnzyby.tnx.net/users/at/atcdbnzyby/cat-alog.ru/5/2fJnc9NTA=.txt atcdbnzyby.tnx.net 208.91.197.27 text/html

[21/Dec/2016:03:13:08 +0300] 201 89.111.177.70 TCP_MISS/200/200 578 GET http://ipages.tnx.net/users/ip/ipages/denttorg.ru/e/71/Dg0.txt ipages.tnx.net 208.91.197.27 text/html

[21/Dec/2016:03:13:08 +0300] 0 89.111.176.66 TCP_MEM_HIT/302/- 576 GET http://fprcorp.com/minilink.php?md=2&nl=ivarga.ru//index.php/index.php?option=com_coppermine*Itemid=88888888&host=ivarga.ru - - text/html

[21/Dec/2016:03:13:08 +0300] 644 80.93.62.199 TCP_MISS/200/200 38187 GET http://btuan03.newproduct10.online/weilai.php?mt=0&yid=19&lid=33398&from=http%3A%2F%2Fwww.zavod-kmz.ru%2Fincludes%2Farise%2F33398%2Fimages%2F%2Bbuttons&jump=0&action=&cache=1 btuan03.newproduct10.online 104.27.169.223 text/html

Копируем его в HDFS:

$ hdfs dfs -put /tmp/access.log /user/hive/

Переключаемся в консоль Hive (не забываем, что подключаться надо через ZooKeeper!):

Подробнее: Применение HIVE на примере анализа лога

Написание простого MapReduce-приложения

MapReduce — модель распределённых вычислений, используемая для параллельных вычислений над очень большими, несколько петабайт, наборами данных в компьютерных кластерах. Преимущество MapReduce заключается в том, что он позволяет распределенно производить операции предварительной обработки и свертки. Операции предварительной обработки работают независимо друг от друга и могут производиться параллельно (хотя на практике это ограничено источником входных данных и/или количеством используемых процессоров). Аналогично, множество рабочих узлов могут осуществлять свертку — для этого необходимо только чтобы все результаты предварительной обработки с одним конкретным значением ключа обрабатывались одним рабочим узлом в один момент времени. Хотя этот процесс может быть менее эффективным по сравнению с более последовательными алгоритмами, MapReduce может быть применен к большим объёмам данных, которые могут обрабатываться большим количеством серверов. Так, MapReduce может быть использован для сортировки петабайта данных, что займет всего лишь несколько часов. Параллелизм также дает некоторые возможности восстановления после частичных сбоев серверов: если в рабочем узле, производящем операцию предварительной обработки или свертки, возникает сбой, то его работа может быть передана другому рабочему узлу (при условии, что входные данные для проводимой операции доступны).

Создаем тестовую директорию в файловой системе hdfs:

$ su - hdfs

$ hdfs dfs -mkdir /user/mytest

$ hdfs dfs -ls /user/

Found 6 items

drwxr-xr-x - hdfs supergroup 0 2016-12-27 14:43 /user/hadoop

drwxr-xr-x - hdfs supergroup 0 2016-12-27 12:39 /user/hdfs

drwxrwxrwx - mapred hadoop 0 2016-12-26 14:19 /user/history

drwxrwxr-t - hive hive 0 2016-12-27 10:26 /user/hive

drwxrwxr-x - hue hue 0 2016-12-27 10:27 /user/hue

drwxr-xr-x - hdfs supergroup 0 2016-12-27 12:23 /user/mytest

Подробнее: Написание простого MapReduce-приложения
unix-way