热门标签 | 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搭建大数据平台 ... [详细]
  • 在前一篇文章《Hadoop》系列之“踽踽独行”(二)中,我们详细探讨了云计算的核心概念。本章将重点转向物联网技术,全面解析其基本原理、应用场景及未来发展前景。通过深入分析物联网的架构和技术栈,我们将揭示其在智能城市、工业自动化和智能家居等领域的广泛应用潜力。此外,还将讨论物联网面临的挑战,如数据安全和隐私保护等问题,并展望其在未来技术融合中的重要角色。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • PHP中元素的计量单位是什么? ... [详细]
  • 在Hive中合理配置Map和Reduce任务的数量对于优化不同场景下的性能至关重要。本文探讨了如何控制Hive任务中的Map数量,分析了当输入数据超过128MB时是否会自动拆分,以及Map数量是否越多越好的问题。通过实际案例和实验数据,本文提供了具体的配置建议,帮助用户在不同场景下实现最佳性能。 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • hadoop3.1.2 first programdefault wordcount (Mac)
    hadoop3.1.2安装完成后的第一个实操示例程 ... [详细]
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社区 版权所有