热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用百度开放云分析网站日志

网站日志包含用户访问信息,通过日志分析我们可以了解网站的访问量、网页访问次数、网页访问人数、频繁访问时段等等,以便获取用户行为以优化网站的商业价值。由于网站每天会产生海量的日志,非


网站日志包含用户访问信息,通过日志分析我们可以了解网站的访问量、网页访问次数、网页访问人数、频繁访问时段等等,以便获取用户行为以优化网站的商业价值。由于网站每天会产生海量的日志,非常适合使用 百度MapReduce (简称BMR)这样的托管Hadoop服务。同时,BMR集成了Hive和Hue,开发者可以在友好的界面中通过SQL语句就能分析海量日志,大大降低了使用门槛。


下面将通过一个具体的例子来展示如何通过BMR来分析网站日志。


创建BMR集群


BMR集群有两种常见的模式:



  • 按需:用户可以把数据保存在对象存储BOS中,创建BMR集群并绑定BOS,以便读写BOS中的数据进行海量数据分布式处理。处理完了可以释放集群以节省计算资源,而数据已经持久化在BOS中。这种计算与存储分离的按需模式,非常适合批处理的场景。

  • 常驻:用户可以创建BMR集群,然后把数据存储在本地HDFS中处理,适合随时需要大数据处理的常驻场景。


两种场景互相补充,适合不同的需求。

这里将使用按需场景处理Nginx日志,示例数据可以从
这里 下载。下载以后请登录
百度开放云管理控制台 ,创建或者选择一个bucket并上传。比如,日志上传到名为bigdata的bucket的log目录中,之后便可以通过bos://bigdata/log提交给BMR,BMR会自动扫描文件夹下面所有的日志文件。现在进入百度MapReduce并创建集群,根据提示完成配置步骤。注意,在软件配置设置栏内,镜像类型请选择Hadoop 0.2.0并确保添加Hive和Hue应用。不出几分钟BMR会创建集群并把登录信息以短信的方式,请根据相应信息进行
SSH连接到集群


分析网站日志


Hue是一个开源的Apache Hadoop 图形界面系统,通过使用Hue我们可以在浏览器中与Hadoop集群交互来分析处理数据,例如创建数据集、执行Hive查询等。

考虑到安全因素,目前Hue的访问需要通过SSH。请参考
建立SSH Tunnel 并设置浏览器代理,然后
访问Hue Web界面 。

在分析之前,首先需要根据网站日志建立一张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:///";

这样,Hive会重建access_logs表,然后通过正则表达式来解析日志文件。注意LOCATION需要跟上传日志文件所在的bucket和folder相对应,比如bos://bigdata/log。

成功创建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')))

切换到图表页,可以以柱状图来可视化结果:


可见大量的访问在晚上九点,是不是需要在这段时间多投放一些广告呢?


推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 1、编写一个Java程序在屏幕上输出“你好!”。programmenameHelloworld.javapublicclassHelloworld{publicst ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • 本文介绍了如何在 MapReduce 作业中使用 SequenceFileOutputFormat 生成 SequenceFile 文件,并详细解释了 SequenceFile 的结构和用途。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文介绍了Hadoop的核心组件,包括高可靠性和高吞吐量的分布式文件系统HDFS、分布式的离线并行计算框架MapReduce、作业调度与集群资源管理框架YARN以及支持其他模块的工具模块Common。 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
author-avatar
寒风中挣扎_427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有