实战演习(四)——网络流量系统分析简介

1、流量分析是指在互联网终端上的所有网络行为,并针对这个流量数据进行数据分析,用户的每一次点击会产生大量的流量信息,这些信息本身存在较多的价值,可以进行数据挖掘;

主要分析的内容为:移动用户的上网行为数据;内容分析;用户画像;终端分析;网络系统监控;上网详单查询等。。。。

这其中主要有这几个步骤:

    1. 最外层网关:

数据采集:即数据的来源是什么,传统的BASS经营分析数据,网关数据等,互联网爬取等。

    1. ftp服务器:

采集的数据,通过ftp服务器,汇总到一起,数据的样式有很多:图片、文字等,保持五分钟一个目录,不断的写积累在服务器上。。

    1. 日志采集服务器:

ftp上传输的数据由于是连续的,因此需要考虑数据的完整和连续性,因此需要使用高可用的结构,可以通过使用java编写实现系统的健壮性,除此之外还要考虑数据的实时性、可靠性(不能在传输的过程中出错)。在java的系统中需要定义几个线程:

首先有一个线程,每五分钟探测ftp服务器中的文件夹是否生成完毕,并将生成完毕的文件暂时放到日志存储的服务器上;

另一个线程每十五分钟对数据进行一次数据传送,将数据传送到下面的HDFS中,数据在HDFS中实现分类,在传送的过程中需要对传送的文件进行标记,标记开头和结尾,如果传输过程中异常,则删除之前传输的数据,重新再传;

除了上面的两个线程外,还需要一个线程,用来做备份管理,即将上传到HDFS中的文件临时的备份到另外的空间中,这些备份数据每隔一段时间进行一次删除。

    1. 实时流量分析(图表左侧的内容):

上面的分析为一种离线的分析,另外还有一种实时的数据分析,主要是用到kafka、storm和HBase三种结构,对用户的地理位置信息进行分析,此时需要用到一些用户的地理位置,就会考虑到数据的基站。数据会访问最近的基站,在基站中保留最近的数据,因此需要找到相应地理位置,具体的技术点后面会做详细介绍。

HBase有一个特性:根据每一行的主键(rowkey),字典顺序将数据按顺序排序;HBase的表天生是分布式的,容量可以在线扩容;

2、本课所讲的案例图解为:

从图中可以看到,整体的系统比较复杂,此处主要针对几个方面进行介绍,存储在HDFS中的内容存在大量的数据价值,可以实现较多的功能,笔者主要介绍行为轨迹增强功能,具体的实现会涉及到爬虫的编写和MR实现的数据清洗、分类,主要用到的数据源为HDFS中的数据。

3、离线文件处理时通过mr可以实现行为轨迹增强:

数据存储到hdfs中时(HDFS中的数据主要有两部分组成:一个是网关过来的数据,另一个是HBASE中到过来的数据),另外有一个MR程序将数据导入到另外的服务器中,将这些数据集中在另外的系统中存储,然后在这个新的系统中对数据进行分类,SCA(内容识别与行为轨迹增强)每小时运行一次。

在用户的访问信息中,一般会发现用户访问的网址,但对网址的具体信息无法分辨,因此需要对这些url进行相应的爬取,然后发觉url中的内容<url:url的网页内容>,并将其存储在知识库(此处为规则库、实例库)中,下次再在日志中分析到相同的url,可以直接在知识库中获取,最后将查询到的内容存储在数据仓库中,比如:在哪里、网关、时间、详细URL等多个字段,详细的URL可以进行更深度的细分,获取URL页面上的数据,然后根据这些数据来强化日志信息:比如:<在哪里、网关、时间、详细URL>——>获取到记录中的url,然后爬取url中的内容,将相关的内容添加到记录中——><在哪里、网关、时间、详细URL、访问网页主题、关键字等>,然后将其存储在数据仓库中,以供后面使用。

在网银中可以借鉴这一经验:

1)网银系统中产生的日志用flume收集到HDFS服务器中,然后使用MR程序截取日志中有用的信息,其中包括账号等信息;

2)拿账号等信息与网银数据库中的数据做比较,如果数据库中存在这个账号对应的增强信息,则数据经过3、4进入到数据仓库中;

3)如果经比较发现没有相应的信息,则经过3、5进入到爬虫系统的队列中;

4)爬虫会从核心的日志中找到用户需要的信息,然后将其存储在网银的数据库中;

5)下次再有相同账号流入时,就直接走2、3、4流程,存储到数据仓库中。

规则库:URL库,行为增强的一些规则在这一库中,程序根据分解的原始资料中的url内容,匹配规则库,如果匹配成功则发送到下面的系统,如果匹配不上,则再进行匹配,再匹配的内容就发生再实例库中。

实例库:也是一些URL及内容,如果上面的内容匹配不上,则进行下面的库的匹配。

规则库是人工生成的,主要是一些有代表性的url,对其进行分类,贴标签等;实例库是通过爬虫等工具自动识别的内容信息,自动存入到实例库中,以行为增强程序方便程序进行比较。

       过滤到本地的日志信息会与实例库进行匹配,如果匹配到则显示匹配成功,然后输出增强之后的日志,放入到另一个系统的HDFS中;如果匹配失败,则将url放入到待爬清单中,在待爬清单附近有一个爬虫,用来监控待爬清单,一旦待爬清单中存入url,则爬虫就会启动,进行相应数据的爬取;爬取数据时用到任务队列BlockQ,一边讲url放入队列,另一边有个线程池从另一端取,爬虫根据取出的url来爬取网页,在队列中的数据出站的时候可以做一个校验,如果大量url来自于同一个网站,则将其打散,然后再爬取,防止反爬技术。

       爬取的信息需要进行相应的解析,解析的过程为内容识别,用到的技术为机器学习,即使用NLP等技术,提取文本的主题信息、主旨大意等。用到的算法常用的有SVM等,这一方式的效果在小数据量时未必显著,因此有大牛提出了另外的方法——模板抽取识别,对主流的大型的结构清晰的网站非常有用处;比如:通过将主流的网站进行分析,分析其网页结构,根据需求,形成文本提取的模板,以bean的形式存储模板:<youku:模板>,存储在系统的properties文件中,爬虫根据模板爬取相应的模板信息;然后将这个模板信息写入到实例库中。

在识别URL是否已经爬取过时,可以用到布隆过滤器,来进行处理,布隆过滤器的原理为:

  1. 首先爬取一个url,爬取完成后将对应的url通过一个算法映射到一个64位byte数组中,映射到的地方掷为1;
  2. 再次的爬取时会对这个数组进行校验,如果映射到的位置有值,则表示该url已经爬取过,否则,表示没有爬取;

增强之后的日志会被存储在数据仓库中去,然后形成各种模型。

可以统计出流量耗费占80%的url,作为热门访问url,然后对其进行分析。

如何抽取有代表性的url:

主要是通过url的流量统计,对同一url的访问流量做一次排序,排序在前面的url进行抽取,然后存放在数据库中作为知识库。

猜你喜欢

转载自blog.csdn.net/livan1234/article/details/81147389