流程如下:
1 把个website服务器日志目录mount到namenode 服务器相应的目录下:如:
sudo mount -t cifs //10.22.1.81/AdvancedLogging /home/hadoop/advancedlogging/81 -o username="prod\pro",password='it@lent_8*H\'
2 通过python 脚本putiislog.py 把要分析天数的日志put到hdfs上,此例分析昨天的,因为日志不是按天切换的,所以每次put 当天和昨天的日志,实际上我就分析昨天的,不过当天日志里会有昨天的日志
3 put 完以后,通过编写map 和 reduce python脚本,结构化日志
4 进入hive 创建相应的分区,(前提是要先创建好表,一般一个表就够) 此例 创建两个分区,website 和 time 如: "alter table structuredlog add partition(website='www.aa.com',time='2013-07-11')"
5 把结构化出来的数据cp 到hive 中,
6 进入hive 就可以通过hql语句进行日志分析了
涉及到几个脚本
1 putiislog.py (总执行文件,里面含有所有过程)
2 advanceiislogparser.py (结构化advancelog日志,每列用 * 分割)
3 mapiislog.py (hdfs map过程)
#!/usr/bin/python2.4
#coding=utf8
import fileinput
import glob
import string
import sys
for line in sys.stdin:
line = line.strip()
print line
4 mapandreduce.sh (map/reduce 过程,创建分区,数据导入到hive)
1 2 4 脚本见附件 用linux 下的vim 打开