使用 Hadoop 相关框架进行网站流量日志分析
1. 如何进行网站分析
网站分析整体来说是一个内涵非常丰富的体系,整体过程是一个金字塔结构:
金字塔的顶部是网站的目标:投资回报率(ROI)。
1.1. 网站流量质量分析(流量分析)
流量对于每个网站来说都是很重要,但流量并不是越多越好,应该更加看重流量的质量,换句话来说就是流量可以为我们带来多少收入。
X 轴代表量,指网站获得的访问量。Y 轴代表质,指可以促进网站目标的事件次数(比如商品浏览、注册、购买等行为)。圆圈大小表示获得流量的成本。
第一象限:质高量高。这是网站的核心流量,对于这部分流量保持即可。建议降低获取流量的成本。
第二象限:质高量低。这部分是网站的忠诚用户,有很高的质,建议提高量。
第三象限: 量可以质较低,并且获取量的成本比较高。
第四象限:量高质低。这部分需要提高质量。
BD 流量是指商务拓展流量。一般指的是互联网经过运营或者竞价排名等方式,从外部拉来的流量。比如在百度上花钱来竞价排名,产生的流量就是 BD 流量的一部分。
1.2. 网站流量多维度细分(流量分析)
细分是指通过不同维度对指标进行分割,查看同一个指标在不同维度下的表现,进而找出有问题的那部分指标,对这部分指标进行优化。
指标是访问量,就是我们常说的流量。在来源维度、媒介维度、时间维度、位置维度等维度下,我们可以对访问量进行单独或者重叠的多维度细分。
1.3. 网站内容及导航分析(内容分析)
对于所有网站来说,页面都可以被划分为三个类别:
导航页、功能页、内容页
首页和列表页都是典型的导航页;
站内搜索页面、注册表单页面和购物车页面都是典型的功能页,
而产品详情页、新闻和文章页都是典型的内容页。
导航页的目的是引导访问者找到信息,功能页的目的是帮助访问者完成特定任务,内容页的目的是向访问者展示信息并帮助访问者进行决策。
比如从内容导航分析中,以下两类行为就是网站运营者不希望看到的行为:
第一个问题:访问者从导航类页面(首页)进入,还没有看到内容类页面(详情页)之前就从导航类页面(列表页)离开网站。在这次访问中,访问者并没有完成任务,导航类页面也没有将访问者带入到内容类页面(详情页)中。因此,需要分析导航类页面(列表页)造成访问者中途离开的原因。
第二个问题:访问者从导航类页面(首页或列表页)进入网站,从内容类页面(详情页)又返回到导航类页面(首页)。看似访问者在这次访问中完成了任务(如果浏览内容页就是这个网站的最终目标的话),但其实访问者返回首页是在开始一次新的导航或任务。说明需要分析内容页的最初设计,并考虑中内容页提供交叉的信息推荐。
1.4. 网站转化以及漏斗分析(转化分析)
转化,指网站业务流程中的一个封闭渠道,引导用户按照流程最终实现业务目标(比如商品成交);在这个渠道中,我们希望访问者一路向前,不要回头也不要离开,直到完成转化目标。
漏斗模型则是指进入渠道的用户在各环节递进过程中逐渐流失的形象描述。
对于转化渠道,主要进行两部分的分析:访问者的流失和迷失。
l 转化中的阻力的流失
转化的阻力是造成访问者流失的主要原因之一。这里的阻力包括:
错误的设计、错误的引导
错误的设计包括访问者在转化过程中找不到下一步操作的按钮,无法确认订单信息,或无法完成支付等。
错误的引导包括在支付过程中提供很多离开的渠道链接,如不恰当的商品或者活动推荐、对支付环节中专业名称的解释、帮助信息等内容。
造成流失的原因很多,如:
不恰当的商品或活动推荐
对支付环节中专业名词的解释、帮助信息等内容不当
l 访问者的迷失
造成迷失的主要原因是转化流量设计不合理,访问者在特定阶段得不到需要的信息,并且不能根据现有的信息作出决策,比如在线购买演唱会门票,直到支付也没看到在线选座的提示,这时候就很可能会产生迷失,返回查看。
总之,网站数据分析是一门内容非常丰富的学科,本课程中主要关注网站流量分析过程中的技术运用,更多关于网站数据分析的业务知识可学习文档首页推荐的资料。
2. 整体技术流程及架构
2. 1 数据处理流程
网站流量日志数据分析是一个纯粹的数据分析项目,其整体流程基本上就是依据数据的处理流转流程进行。通俗可以概括为:数据从哪里来和数据到哪里去,可以分为以下几个大的步骤:
2.2 数据采集
数据采集概念,目前行业会有两种解释:
一是数据从无到有产生的过程(服务器打印的 log、自定义采集的日志等)叫做数据采集;
另一方面也有把通过使用 Flume 等工具把数据采集搬运到指定位置的这个过程叫做数据采集。
关于具体含义要结合语境具体分析,明白语境中具体含义即可。
2.3 数据预处理
数据预处理(data preprocessing)是指在正式处理以前对数据进行的一些处理。现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据分析,或者说不利于分析。为了提高数据分析的质量和便捷性产生了数据预处理技术。
数据预处理有多种方法:数据清理,数据集成,数据变换等。这些数据处理技术在正式数据分析之前使用,大大提高了后续数据分析的质量与便捷,降低实际分析所需要的时间。
技术上原则来说,任何可以接受数据经过处理输出数据的语言技术都可以用来进行数据预处理。比如 java、Python、shell 等。
本项目中通过 MapReduce 程序对采集到的原始日志数据进行预处理,比如数据清洗,日期格式整理,滤除不合法数据等,并且梳理成点击流模型数据。
使用 MapReduce 的好处在于:一是 java 语言熟悉度高,有很多开源的工具库便于数据处理,二是 MR 可以进行分布式的计算,并发处理效率高。
2.4. 数据入库
预处理完的结构化数据通常会导入到 Hive 数据仓库中,建立相应的库和表与之映射关联。这样后续就可以使用 Hive SQL 针对数据进行分析。
因此这里所说的入库是把数据加进面向分析的数据仓库,而不是数据库。因项目中数据格式比较清晰简明,可以直接 load 进入数据仓库。
实际中,入库过程有个更加专业的叫法—ETL。ETL 是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
ETL 的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计 ETL 的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到 ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高 ETL 的运行效率。ETL 三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个 ETL 的 2/3。数据的加载一般在数据清洗完了之后直接写入 DW(Data Warehousing,数据仓库)中去。
2.5. 数据分析
本阶段是项目的核心内容,即根据需求使用 Hive SQL 分析语句,得出指标各种统计结果。
2.6. 数据可视化
将分析所得数据结果进行数据可视化,一般通过图表进行展示。
数据可视化可以帮你更容易的解释趋势和统计数据。
3. 系统的架构
相对于传统的 BI 数据处理,流程几乎差不多,但是因为是处理大数据,所以流程中各环节所使用的技术则跟传统 BI 完全不同:
数据采集:页面埋点 JavaScript 采集;开源框架 Apache Flume
数据预处理:Hadoop MapReduce 程序
数据仓库技术:基于 hadoop 的数据仓库 Hive
数据导出:基于 hadoop 的 sqoop 数据导入导出工具
数据可视化:定制开发 web 程序(echarts)
整个过程的流程调度:hadoop 生态圈中的 azkaban 工具
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/c73dfb5393f892fe47d315957】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论