一、日志数据分析
1.背景
1.1 ***论坛日志,数据分为两部分组成,原来是一个大文件,是56GB;以后每天生成一个文件,大约是150-200MB之间;

每行记录有5部分组成:1.访问ip;2.访问时间;3.访问资源;4.访问状态;5.本次流量

1.2 日志格式是apache common日志格式;
1.3 分析一些核心指标,供运营决策者使用;

1.3.1 浏览量PV

定义:页面浏览量即为PV(Page View),是指所有用户浏览页面的总和,一个独立用户每打开一个页面就被记录1 次。分析:网站总浏览量,可以考核用户对于网站的兴趣,就像收视率对于电视剧一样。但是对于网站运营者来说,更重要的是每个栏目下的浏览量。计算公式:记录计数。注意要和后面的IP数区分开来,浏览量可以包括重复ip地址。

1.3.2 注册用户数

计算公式:对访问member.php?mod=register的url,计数

1.3.3 IP数

定义:一天之内,访问网站的不同独立IP 个数求和,其中同一IP无论访问了几个页面,独立IP 数均为1。分析:这是我们最熟悉的一个概念,无论同一个IP上有多少电脑,或者其他用户,从某种程度上来说,独立IP的多少,是衡量网站推广活动好坏最直接的数据。公式:对不同ip计数

1.3.4 跳出率

定义:只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比,即只浏览了一个页面的访问次数 / 全部的访问次数汇总。分析:跳出率是非常重要的访客黏性指标,它显示了访客对网站的兴趣程度:跳出率越低说明流量质量越好,访客对网站的内容越感兴趣,这些访客越可能是网站的有效用户、忠实用户。

该指标也可以衡量网络营销的效果,指出有多少访客被网络营销吸引到宣传产品页或网站上之后,又流失掉了,可以说就是煮熟的鸭子飞了。比如,网站在某媒体上打广告推广,分析从这个推广来源进入的访客指标,其跳出率可以反映出选择这个媒体是否合适,广告语的撰写是否优秀,以及网站入口页的设计是否用户体验良好。

计算公式:(1)统计一天内只出现一条记录的ip,称为跳出数;(2)跳出数/PV

1.3.5 板块热度排行

定义:版块的访问情况排行。分析:巩固热点版块成绩,加强冷清版块建设。同时对学科建设也有影响。计算公式:按访问次数统计排序

1.4 开发该系统的目的是分了获取一些业务相关的指标,这些指标在第三方工具中无法获得的;

2 开发步骤

  2.1 使用flume将日志文件上传到HDFS;

如果是日志服务器数据较小、压力较小,可以直接使用shell命令把数据上传到HDFS中;如果是日志服务器数据较大、压力较答,使用NFS在另一台服务器上上传数据;如果日志服务器非常多、数据量大,使用flume进行数据处理;

2.2 编写MapReduce程序对HDFS中的数据进行清洗;

2.3 使用Hive对清洗后的数据进行统计;

2.4 将统计后的数据通过Sqoop导出到MySql中;

2.5 如果需要查看详细数据,则可以通过HBase进行展现;

3 详细概述

3.1 使用Shell数据将数据从Linux上传到HDFS中

3.1.1 首先在HDFS上创建目录

      命令:$HADOOP_HOME/bin/hadoop fs -mkdir /hmbbs_logs

3.1.2 编写Shell脚本,用于上传文件到HDFS中

      yesterday=`date --date='1 days ago' +%Y_%m_%d`
            hadoop fs -put /apache_logs/access_${yesterday}.log   /hmbbs_logs

3.1.3 把脚本upload_to_hdfs.sh配置到crontab(定时器)中,执行命令crontab -e, 写法如下

       * 1 * * * upload_to_hdfs.sh

  3.2 使用MapReduce对数据进行清洗,将清洗后的数据保存到HDFS中的/hmbbs_cleaned目录下,每天产生一个子目录

  3.3 使用Hive对清洗后的数据进行统计

    3.3.1 首先建立一个外部分区表,脚本如下

       CREATE EXTERNAL TABLE hmbbs(ip string, atime string, url string) PARTITIONED BY (logdate string) ROW FORMAT DELIMITED FIELDS        TERMINATED BY '\t' LOCATION '/hmbbs_cleaned';

    3.3.2 对新建表增加分区,脚本如下

        ALTER TABLE hmbbs ADD PARTITION(logdate='2013_05_30') LOCATION '/hmbbs_cleaned/2013_05_30';
              把代码增加到upload_to_hdfs.sh中,内容如下
              hive -e "ALTER TABLE hmbbs ADD PARTITION(logdate='${yesterday}') LOCATION '/hmbbs_cleaned/${yesterday}';"

    3.3.3 对数据进行统计,代码如下

       CREATE TABLE hmbbs_pv_2013_05_30 AS SELECT COUNT(1) AS PV FROM hmbbs WHERE logdate='2013_05_30';
              统计每日的注册用户数,代码如下
              CREATE TABLE hmbbs_reguser_2013_05_30 AS SELECT COUNT(1) AS REGUSER FROM hmbbs WHERE logdate='2013_05_30' AND 
              统计每日的独立ip,代码如下
              CREATE TABLE hmbbs_ip_2013_05_30 AS SELECT COUNT(DISTINCT ip) AS IP FROM hmbbs WHERE logdate='2013_05_30';
              统计每日的跳出用户,代码如下
              CREATE TABLE hmbbs_jumper_2013_05_30 AS SELECT COUNT(1) AS jumper FROM (SELECT COUNT(ip) AS times FROM hmbbs WHERE
              把每天统计的数据放入一张表
              CREATE TABLE hmbbs_2013_05_30 AS SELECT '2013_05_30', a.pv, b.reguser, c.ip, d.jumper FROM hmbbs_pv_2013_05_30                  hmbbs_reguser_2013_05_30 b ON 1=1 JOIN hmbbs_ip_2013_05_30 c ON 1=1 JOIN hmbbs_jumper_2013_05_30 d ON 1=1 ;

  3.4 使用Sqoop将统计结果导出到MySql中

    sqoop export --connect jdbc:mysql://hadoop0:3306/hmbbs --username root --password admin --table hmbbs_logs_stat --fields-  terminated-by '\001' --export-dir '/user/hive/warehouse/hmbbs_2013_05_30'

  3.5 完善执行的shell脚本

    3.5.1 初始化数据的脚本

    3.5.2 每日执行的脚本

4 表结构

  4.1 HBase表结构

    

明细表

行键

ip:date:random

明细列族

cf:all

  4.2 MySql表结构

    

ip、版块访问表

日期

acc_date

ip

ip

版块

forum

浏览量

pv

    

汇总表

日期

acc_date

浏览量

pv

新用户

newer

独立ip

iip

跳出数

jumper

Hadoop学习之Hadoop案例分析的更多相关文章

  1. 作业2——英语学习APP的案例分析

    英语学习APP的案例分析 很多同学有误解,软件工程课是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件工程有理论,有实践,更重要的 ...

  2. 【尚学堂·Hadoop学习】MapReduce案例2--好友推荐

    案例描述 根据好友列表,推荐好友的好友 数据集 tom hello hadoop cat world hadoop hello hive cat tom hive mr hive hello hive ...

  3. hadoop学习;hadoop伪分布搭建

    先前已经做了准备工作安装jdk什么的,以下開始ssh免password登陆.这里我们用的是PieTTY工具,当然你也能够直接在linux下直接操作 ssh(secure shell),运行命令 ssh ...

  4. Hadoop学习之Hadoop集群搭建

    1.检查网络状况 Dos命令:ping ip地址,同时,在Linux下通过命令:ifconfig可以查看ip信息2.修改虚拟机的ip地址    打开linux网络连接,在桌面右上角,然后编辑ip地址, ...

  5. 个人作业2————英语学习APP的案例分析

    必应词典案例分析 第一部分 调研, 评测 1.下载并使用 第一次使用必应词典,安装完打开便是这样的界面,第一印象还行,界面平平无奇,比较简洁,上面分四个模块,这样一眼看去感觉功能比较单一 使用了下例句 ...

  6. Hadoop学习笔记——Hadoop经常使用命令

    Hadoop下有一些经常使用的命令,通过这些命令能够非常方便操作Hadoop上的文件. 1.查看指定文件夹下的内容 语法: hadoop fs -ls 文件文件夹 2.打开某个已存在的文件 语法: h ...

  7. 【尚学堂·Hadoop学习】MapReduce案例1--天气

    案例描述 找出每个月气温最高的2天 数据集 -- :: 34c -- :: 38c -- :: 36c -- :: 32c -- :: 37c -- :: 23c -- :: 41c -- :: 27 ...

  8. hadoop学习之hadoop完全分布式集群安装

    注:本文的主要目的是为了记录自己的学习过程,也方便与大家做交流.转载请注明来自: http://blog.csdn.net/ab198604/article/details/8250461 要想深入的 ...

  9. 二十六、Hadoop学习笔记————Hadoop Yarn的简介复习

    1. 介绍 YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度. 之前有提到过,Yarn主要是为了减轻Hadoop ...

随机推荐

  1. POJ 1703 Find them, Catch them (数据结构-并查集)

    Find them, Catch them Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 31102   Accepted: ...

  2. 初学springMVC搭建框架过程及碰到的问题

    刚刚开始学spring框架,因为接了一个网站的项目,想用spring+springMVC+hibernate整合来实现它,现在写下搭建框架的过程及碰到的问题.希望给自己看到也能让大家看到不要踏坑. 一 ...

  3. Spire PDF for .NET 在ASP.NET中的使用 ---- 并非那么“美好”,有些挫折!

    笔者注:看此文前,请您先看一下上一篇文章吧. 昨天的时候,我测试了一下Spire PDF在WinForm程序中的应用,可以说用起来很简单(请忽略效率问题,没有进行测试).不过在互联网如此发达的今天,适 ...

  4. 2014.12.01 B/S 使用VS建立Web网站

    要求:从hr数据库info表读取数据,在Web网站中显示为如图: 用DW绘制一个表格,然后将代码拷贝到新建的网站主页代码中 <div> <table bgcolor=" w ...

  5. VMware vCenter Converter 使用,Error code: 2147549183 (0x8000FFFF) 解决方案

    在实际生产环境中,为了节省成本,会将实体机转换为虚拟机,从而虚拟化. 在公司数据中心环境的中跑VMware vCenter ConverterStandalone Client 4.3,将其中一台on ...

  6. OCP-1Z0-053-V12.02-512题 【转】

    http://blog.csdn.net/gisinfo/article/details/8159875 1.Which two statements correctly describe the r ...

  7. 关于中文乱码的解决方法(URL方式)

    假设keyWord ='阳光'; url="play.jsp? keyWord ="+ keyWord 若按照上述的地址直接访问,则中文会变成乱码.必须使用encodeURI()进 ...

  8. Python核心编程读笔 11:模块

    第12章 模块 1.基本概念 模块的文件名就是模块名字.py 每个模块都定义了自己唯一的名称空间 模块的搜索路径:会被保存在 sys 模块的 sys.path 变量里 >>>sys. ...

  9. CSS 技术关键字

    CSS 技术关键字 元素 替换元素 非替换元素------替换元素和非替换元素的分类是CSS范畴内的,其它的分类都不属于CSS定义的                替换元素和非替换元素的定义是出于“我 ...

  10. css区块定位之浮动与清除属性

    float属性将所属标记的显示空间指定为一个浮动元素,并使其周围对象按一定的方式环绕它排列. float属性的作用就象图像和表格的align属性一样,但可以用到任何元素上. clear属性的作用是禁止 ...