JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

大数据学习需要掌握的用户浏览行为及事件的数据收集与处理技术

wys521 2024-10-15 16:07:22 精选教程 17 ℃ 0 评论

一、日志采集

  1. 日志接收服务端

Nginx在处理高并发上表现优异。因此我们采用Nginx作为日志接收的服务端。 Nginx的部署相对比较简单,在请求量很大时,我们可以部署两台 Nginx服务器,使用负载均衡。

Nginx关键配置里,主要是配置日志格式、日志路径等信息。日志格式在后续的日志解析中会用到,按照分隔符进行分割。我们可以在conf.d中设置不同的路由规则,比如在请求1.gif时,日志放在/a目录,请求2.gif时,日志放在/b目录。如果发送的单条信息量不大,可以采用get模式,如果采用post模式,需要安装php。安装后,就可以往index.php进行post数据。

2、前端采集

对于网站用户的浏览数据,我们一般采用埋点方式,在网页的公共块中引入统计js。网页在加载时,js的功能代码就会收集相关的数据,比如用户访问的地址,用户浏览器信息,用户id信息,将这些信息进行组装,比如以json形式。最后以参数形式,发送到上面第一步的日志接收服务端的地址。对于用户点击按钮的事件,我们可以监听鼠标点击事件,在触发时执行我们组装发送数据的逻辑。目前很多公司采用这种方式进行采集,我们可以看下汽车之家网站首页,抓包时可以看到,在访问首页时会有下面的请求,可以看到这个请求的参数里,封装了很多用户请求的信息

而对于app端的数据采集,一般则需要客户端编码,在一定事件触发下,组装相关数据,进行发送。比如在打开app时,客户端会收集设备信息、网络状态、软件版本信息等,组装成一定格式,发送到日志接收的服务的地址。为了方便部署,可以将这些采集功能的代码封装成SDK。如果使用过一些第三方的统计时,可以很清楚的了解其工作方式。

在这个步骤中,比较重要的一点是对数据字段的定义、发送格式的选型,json,Protocol Buffers等。在客户端数据采集时,由于客户端是流量敏感的,还需要制定一些策略,比如发送数据的压缩、包装、4g网络延迟发送等。

二、日志收集

Flume是一款分布式、高可用的高效日志收集工具。他有多种部署架构,比如下面这种方式,多个日志收集节点(收集flume),一个日志汇总节点(汇总flume)。Flume分为source、channel、sink三个角色类型,分别是数据来源、数据中转类型、和数据发送的目的地类型。

我们先了解下flume工作的三个组件

1、Source 也就是数据的收集端:比较常用的有:

Avro Source:通过监听avro端口接收客户端的事件流 ;

spooldir:监听目录内的数据变动 接收数据流

在新版本里还提供了Taildir Source 方式,来监控文件内数据数据的新增,并近实时的读取出来。 除了上述比较常用的,还支持HTTP Source、 HDFS Source、Exce Source等很多方式,可以查阅官方文档。

2、Channel channel是作为数据的缓冲,一般我们缓存数据会有内存、和硬盘两种方式,因此,Flume提供了 MemoryChannel(内存)和 Spillable Memory Channel(优先内存满后放入磁盘),JDBC Channel(JDBC),Kafka Channel(Kafka) 等多种类型。

3、Sink Sink则是从channel中取出数据,将数据发往最终的目的地。常见的sink有Avro Sink,HDFS Sink,Kafka Sink,Hbase Sink等。

这三个组件的功能如果不满足需求,都可以进行自定义开发。

我们以图1中的部署结构,“收集flume”用来监控Nginx日志目录发送到“汇总flume”,“汇总flume”将日志进行收集后,发送到Kafka队列和HDFS两个目的地中。我们看一下收集Flume的配置:

上面配置需要注意的是,source的type为spooldir,spooldir配置了需要监控的目录,ignorePattern配置了忽略以tmp结尾的文件(flume在读取文件时如果文件内容发生变化会报错,因此我们在文件还有写操作时,将文件后缀命名为tmp),deletePolicy定义了读取完文件后,对该文件的处理,我们配置为立即删除。

channel定义为内存硬盘混合存储。sink方式为将数据发送到我们的汇总flume监听的avro端口。

以上是汇总flume配置,需要注意的是,如果sink和channel是一对一的,也就是说sink到几个目的地就需要定义几个channel。如果多个sink公用一个chanel,那么一份数据是会被均匀分配到多个sink 是不完整的。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表