APP下载

基于Hadoop的流量日志分析

2020-09-07韩雨轩温秀梅

河北建筑工程学院学报 2020年2期
关键词:日志页面分布式

韩雨轩 温秀梅

(河北建筑工程学院,河北 张家口 075000)

1 绪 论

流量日志统计是分析用户行为的重要手段之一,通过对日志文件数据的分析统计,可以分析用户的行为,得到有价值的信息.

首先完成数据分布式处理的整体架构设计以及安装配置,对项目架构的理论依据和整体流程做出解释,然后分析信息采集的业务逻辑,分布式存储底层的处理形式,数据清洗的算法逻辑以及数据在架构内的整体流向.对日志文件进行分布式存储,数据清洗整合后保留更清晰简洁的形式,排除冗余字段,更有利于企业后期的数据分析.

2 系统设计

2.1 需求分析

日志来源于电信类公司的数据流量统计,单一服务器无法存储庞大的数据量.系统实现日志的分布式存储,采用HDFS分布式文件系统进行管理,解决大数据的存储问题[1].

由于日志文件本身的数据庞大冗杂,快速剥离出用户认为有价值的信息比较困难,本系统对分布式存储之后的数据进行清洗整合,去除90%的无用数据,为后续的数据分析做充足的准备工作.为了让用户更为便捷地进行数据查询,系统将HDFS中的数据导出到传统的关系型数据库中,并对数据库中的数据进行可视化的页面展示,给用户更为直观的效果.

2.2 流量日志

以流量日志里的一条数据为例:(以下为一条数据)

362||11|93287887015442665|6||||1|100.82.254.88|100.82.103.132|2152|2152|5272|152590557|27114|131458078||103|1409649442687|1409649443276|1|15|3||0|10.102.255.63||45452|0|140.205.133.14||80|336|570|6|4|0|0|0|0|49|40|0|0|0|50|14200|1400|1|0|1|3|6|200|50|50|500|aqcenter.taobao.com|/tdp.do?c=%7B%7D|aqcenter.taobao.com||text/plain|||235|0|0|0|||3|0|589|0|0|1:336/570

通过对这些数据的处理,可以得到不同小区的上网详情数据.把一段时间内同一个小区内对同一网站、同一IP的访问累计起来,就可以得到某小区内的某网站的访问详情.涉及到的字段说明如图1所示.

2.3 数据的埋点和采集

埋点的用途更多的是用在以后的工作,在暗处观察一些网页数据的变化,收集这些变化信息来为一些服务的更新保留数据上的资源.在特定的流程中收集一些信息,即通过数据埋点来采集数据,比如采集访客(Visitor)、页面访问量(PV:Page Views)、停留时间(Time On Site)、蹦失率(Bounce Rate)等.可以通过JS埋点来实现数据采集.日志收集的目的是把用户对目标网站的访问流量日志汇聚到HDFS中的特定目录,以便提供给下一步的数据清洗模块进行处理.

JS埋点的详细说明:收集某个网页的访问情况,通用的做法是在这个网页上嵌入一个JS脚本,当用户访问该页面时,页面上的JS脚本会在页面上动态加入一个image标签,image标签的src属性指向日志服务器下的一个透明图片的URL地址.在该URL参数上会附带一些用户的访问信息(如被访问页面的URL、识别用户身份的cookie等),通过分析日志服务器(一般是nginx或apache)的access日志文件就能获取到这些信息.采集独立访客UV值的流程如图2所示.

图1 字段说明 图2 数据采集流程图

2.4 系统架构

日志分析系统采用Hadoop中的HDFS文件系统为核心.HDFS处理海量数据,这些数据通常不能整体存储,需要对整体文件进行切块处理,并且分发到不同的磁盘.切块的标准就是Block(数据块).Block大小在Hadoop3.X中默认为128M.

数据来源可以由Flume通过埋点进行日志收集汇聚并交由HDFS做存储,并且可以通过flume的配置实现按照日期等方式分目录存储.

数据在MapReduce中进行Map和Reduce的任务操作,首先Map从HDFS上读入数据,并自动解读成KV对的形式,一行一行的读入,每一个KV对都会执行一次Map函数.用户需要写入自己的逻辑,对这些KV对进行计算处理,返回新的KV对.接下来是分区处理.分区是shuffle过程中的重点环节,之前进行的是Map任务,要把处理的结果传递到Reduce中继续处理,就需要对数据结果进行分区,并依照算法规则决定终点的归属.在完全进入Reduce前,Map还会依照key值执行一次排序任务.为了减少Reduce的任务量,Map也会对数据进行合并,提高Reduce的效率.当数据进入Reduce节点后,将进行合并、排序处理,之后将结果返回到HDFS中存储.

最后,将HDFS中的数据转移到MySQL中进行存储.利用Sqoop工具进行数据导出,Sqoop是沟通NoSQL和关系型数据库的桥梁,可以将HDFS中的数据导出到关系型数据库中.日志分析系统架构如图3所示.

图3 日志分析系统架构图

3 系统实现

3.1 日志分析系统实现

将Flume上传到Linux系统,解压后进行文件配置.本系统配置的是伪分布式,即在单机状态下模拟分布式,而完全分布式需要3台以上服务器或是虚拟机,理论上最好选择6台设备,将NameNode、ResourceManager、NodeManager和JournalNode分布在不同机器上,NameNode和ResourceManager需要同时配置Zookeeper节点,Zookeeper是一个分布式协调统一开发的工具,可以创造一致性的环境,是大数据开发平台经常搭配使用的组件.用Eclipse操作Hadoop需要在其安装目录下的名为plugins的文件夹中移入一个jar包:hadoop-eclipse-plugin-3.1.0.jar,打开eclipse中的MapReduce标签,配置Hadoop的目录,输入正确的端口号,Hadoop3.1.0的默认的端口号与2.0不同,为9870.

3.2 数据清洗实现

本系统使用MapReduce来实现数据清洗,需要设计HyxlunwenMapper、HyxlunwenReducer、HyxlunwenDriver等类进行处理[2].在Mapper类中,先获取日志文件,截取时间戳,将字段按“|”进行拆分,并把需要的字段整合创建对象,补全为空的值,然后对用户会话进行判断,确定其行为是否中断或失败,最后将所解析的数据信息进行整合拼接,作为参数key值进行传输,等待Reduce任务的进一步处理.数据清洗流程如图4所示.

图4 数据清洗流程图

在Reducer类中接收传递过来的参数,定义结果对象,获取values对应的迭代器,为获取的第一个对象赋值,并且对除其以外的其他对象进行遍历,进行累加,形成最后的结果集.数据清洗的结果存储在HDFS的result文件夹下,程序运行成功后会生成新的日志结果文件和一个标识文件_SUCCESS,这是一个空文件.结果保留有用的信息并对一些字段做合并统计.以一条日志信息为例,清洗结果如下:

20150615143630|9|3|10.92.54.127|52531|110.75.156.63|80|mclient.alipay.com|000000000|1|0|1647|2440|0|0|0|2145

4 结果展示

HDFS中的数据最后导出到关系型数据库MySQL中,数据要进行格式化,例如日期、时间等[3].首先在MySQL数据库中创建表,用于封装结果数据,然后用Sqoop工具将数据导入到该表中,执行语句如下:

./sqoop export--connect jdbc:mysql://192.168.72.1:3306/hyxlunwen--username root--password 123456--export-dir ′/lunwen2/result/part-r-00000′--table hyxlunwen -m 1--fields-terminated-by ′|′

成功导入之后,用户就可以直接在数据库中查询数据信息.例如查询指定日期即时通信应用大类中应用小类排名前10的sql语句为:select hourid,appType,appSubtype,totalTraffic from hyxlunwen where hourid=′2017-11-29′ and appType=1 order by totalTraffic desc limit 10;查询结果如图5所示.

图5 SQL语句查询结果图 图6 可视化页面

通过JavaWEB将结果进行可视化展示,例如查询视频大类总流量的排名前十,结果展示如图6所示.以上述结果查询为例:在2017年底,视频类总流量的统计情况是腾讯、优酷网、芒果TV占据主要份额,芒果TV的总流量要远小于优酷和腾讯,腾讯视频和优酷网有很多是独播视频、独播动漫、自制影视剧、热门电影,受众年龄偏低.而芒果TV多为湖南卫视特色剧、综艺节目,受众分布均匀.其他视频类软件可以借鉴成功经验,总结自身视频点击量少的原因,改进网站视频的类型.

5 总结与展望

本系统对数据的清洗指标较单一,可以进一步用Hive进行数据处理,使操作更为简单,增加系统实用性;尝试建立与客户端交互的数据反馈窗口,添加对数据结果的算法分析,总结出更加科学的统计结果;使用HDFS+Spark/Storm架构进行大数据处理,提高数据处理的实时性.

猜你喜欢

日志页面分布式
刷新生活的页面
基于RTDS的分布式光伏并网建模研究
一名老党员的工作日志
答案
让Word同时拥有横向页和纵向页
扶贫日志
雅皮的心情日志
雅皮的心情日志
基于预处理MUSIC算法的分布式阵列DOA估计
基于DDS的分布式三维协同仿真研究