最佳实践 > 使用hive分析网站日志
使用hive分析网站日志
  • 概览
  • 需求场景
  • 网站pv/uv日志分析
  • 方案概述
  • 环境准备
  • 准备日志文件
  • 创建bmr集群
  • 访问hue web界面
  • 分析网站日志
  • 建表
  • 查询
  • 分析结果
  • 6 相关产品

使用hive分析网站日志-奇异果体育app竞彩官网下载

更新时间:

概览

网站日志包含用户访问信息,通过日志分析我们可以了解网站的访问量、网页访问次数、网页访问人数、频繁访问时段等等,以便获取用户行为以优化网站的商业价值。由于网站每天会产生海量的日志,非常适合使用mapreduce(简称bmr)这样的托管hadoop服务。同时,bmr集成了hive和hue,开发者可在浏览器中与hadoop集群交互,分析处理数据,完成创建数据集、执行hive查询等操作,大大降低了使用门槛。

需求场景

网站pv/uv日志分析

web服务网站每天都会有大量的用户访问,相关的用户行为,访问量,访问频次以及用户行为等数据具有很大的商业价值,可以用于用户画像的构建以及用户行为的预测等。

方案概述

示例日志

示例日志是nginx日志,存储在对象存储服务bos的公共可读的路径中:

  • 存储在“华北-北京”区域的样例数据路径为:bos://datamart-bj/web-log-10k/,仅华北区域的bmr集群可用。
  • 存储在“华南-广州”区域的样例数据路径为:bos://datamart-gz/web-log-10k/,仅华南区域的bmr集群可用。

关于百度智能云的区域说明,请参考区域选择说明

分析过程总览

使用bmr分析niginx日志的过程如下:

环境准备

准备日志文件

您可跳过此步直接使用百度智能云提供的示例日志。在熟悉日志分析后,可参考数据准备选择您自己的日志数据。

创建bmr集群

  1. 打开“产品服务>mapreduce>mapreduce-集群列表”,点击“创建集群”,进入集群配置页面。
  2. 设置集群配置:根据界面提示,完成信息的填写。可参考下图:

  3. 在“集群配置”区选择镜像版本bmr 1.0.0(hadoop 2.7),并选择模板“hadoop”。
  4. 其他设置可保持默认设置,点击“下一步”,保持默认设置。再点击“下一步”至订单确认页。
  5. 点击“提交订单”。支付订单后,集群会在十分钟左右创建完成。

访问hue web界面

  1. 打开“产品服务>mapreduce>mapreduce-集群列表”,点击已创建的集群,进入实例详情页面。
  2. 在“相关应用”栏中点击“hue web ui”。

  3. 在弹出的认证页面中输入创建集群时设置的用户名和密码,并点击“登录”。

  4. 创建您登录hue服务的用户名和密码,输入后点击“create account”后进入hue web界面。

分析网站日志

建表

  1. 在分析之前,首先需要根据网站日志建立一张hive表。在hue菜单栏中选择“查询编辑器”>“hive”,并输入以下sql语句:

    drop table if exists access_logs;
    create external table access_logs(
        remote_addr string comment 'client ip',
        time_local string comment 'access time',
        request string comment 'request url',
        status string comment 'http status',
        body_bytes_sent string comment 'size of response body',
        http_referer string comment 'referer',
        http_cookie string comment 'cookies',
        remote_user string comment 'client name',
        http_user_agent string comment 'client browser info',
        request_time string comment 'consumed time of handling request',
        host string comment 'server host',
        msec string comment 'consumed time of writing logs'
    )
    comment 'web access logs'
    row format serde 'org.apache.hadoop.hive.serde2.regexserde'
    with serdeproperties (
        "input.regex" = "([0-9\\.] ) - \\[([^\\]] )\\] \"([^\"]*)\" ([\\d] ) ([\\d]*) \"([^\"]*)\" \"([^\"]*)\" ([\\s] ) \"([^\"]*)\" ([0-9\\.] ) ([\\s] ) ([0-9\\.] )"
        )
    stored as textfile
    location "bos://datamart-bj/web-log-10k";
  2. 输入语句后点击左侧的三角符号执行命令,这样,hive会重建access_logs表,然后通过正则表达式来解析日志文件。
  3. 成功创建access_logs表之后,点击hive editor左侧的刷新按钮,找到access_logs表并预览示例数据:

查询

定了表之后,便可以进行查询了。

  • 若统计网页请求的结果,可使用以下语句:

    select status, count(1)
    from access_logs
    group by status

    查询结果可切换到图表页,还可以以饼图的形式可视化数据,如下图所示:

  • 若想了解那个时段网页访问量最大,可使用下面的语句:

    select hour(from_unixtime(unix_timestamp(time_local, 'dd/mmmm/yyyy:hh:mm:ss z'))) as hour, count(1) as pv
    from access_logs
    group by hour(from_unixtime(unix_timestamp(time_local, 'dd/mmmm/yyyy:hh:mm:ss z')))

    查询结果可切换到图表页,或以柱状图来更直观的查看结果:

分析结果

网页访问量最大的时间点是晚上九点。

6 相关产品

bmr(mapreduce)弹性公网ip(eip)

网站地图