系统项目的git仓库的地址是:​​GitHub - 2462612540/BigData: This project is a warehouse of personal big data technology, which involves hadoop Spark Flink zookeeper Scala... and other technology-related content. The warehouse will be constantly updated. Welcome everyone to build this warehouse together.​

大数据项目实战——大数据日志系统构建_hadoop

项目背景介绍

在大数据的今天,数据已经成为我们的一部分中的重要的资源。在通过对用户的历史数据分析,可以实现对公司和企业的产品的实时分析和评价、在风控管理和实时监控、精确广告投放、可以更好的提供用户个性化的服务……。例如在一下领域的作用:

1黑匣子数据:这是飞机生成的数据,包括喷气式飞机和直升机。黑匣子数据包括机组人员声音、麦克风录音和飞机性能信息。

2社交媒体数据:由Twitter、Facebook、Instagram、Pinterest和谷歌+等社交媒体网站开发的数据。股票交易所数据:这是来自股票交易所的关于客户买卖股票决策的数据。

3电网数据:这是来自电网的数据。它包含特定节点上的信息,比如使用信息。

4传输数据:这包括可能的容量、车辆模型、可用性和车辆所覆盖的距离。

5搜索引擎数据:这是最大的大数据来源之一。搜索引擎拥有庞大的数据库来获取数据。

本系统的就是通对用户的浏览行为数据分析:1用户每次访问网站时所有的行为数据(访问、浏览、搜索、点击…)2 用户行为轨迹、流量日志 3 用户的操作的相关的业务的数据来构建一个大型的日志分析系统。4其他数据爬虫数据……

利用的hadoop实现离线的相关业务数据分析处理。 系统后期采用基于Spark Stream的实时流计算来实现的一个准实时的分析系统。

项目框架设计

大数据项目实战——大数据日志系统构建_外链_02

项目数据采集

  1. JS端的数据的采集

大数据项目实战——大数据日志系统构建_hadoop_03

  1. Server 数据采集

大数据项目实战——大数据日志系统构建_外链_04

  1. Flume的数据的采集

大数据项目实战——大数据日志系统构建_外链_05

Flume的组织架构:

大数据项目实战——大数据日志系统构建_数据分析_06

相关的配置:

大数据项目实战——大数据日志系统构建_hadoop_07

项目数据清洗

  1. JS的相关数据属性

针对我们最终的不同分析模块,我们需要不同的数据,接下来分别从各个模块分析,每个模块需要的数据。用户基本信息就是用户的浏览行为信息分析,也就是我们只需要pageview事件就可以了;浏览器信息分析以及地域信息分析其实就是在用户基本信息分析的基础上添加浏览器和地域这个维度信息,其中浏览器信息我们可以通过浏览器的window.navigator.userAgent来进行分析,地域信息可以通过nginx服务器来收集用户的ip地址来进行分析,也就是说pageview事件也可以满足这两个模块的分析。外链数据分析以及用户浏览深度分析我们可以在pageview事件中添加访问页面的当前url和前一个页面的url来进行处理分析,也就是说pageview事件也可以满足这两个模块的分析。订单信息分析要求pc端发送一个订单产生的事件,那么对应这个模块的分析,我们需要一个新的事件chargeRequest。对于事件分析我们也需要一个pc端发送一个新的事件数据,我们可以定义为event。除此之外,我们还需要设置一个launch事件来记录新用户的访问。

最终分析模块

PC端js sdk事件

用户基本信息分析

pageview事件

浏览器信息分析

地域信息分析

外链数据分析

用户浏览深度分析

订单信息分析

chargeRequest事件

事件分析

event事件


launch事件

Launch事件:当用户第一次访问网站的时候触发该事件,不提供对外调用的接口,只实现该事件的数据收集。

方法名称


发送的数据

u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597974&ver=1&en=e_l&pl=website&sdk=js&b_rst=1920*1080&u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN

Pageview事件:当用户访问页面/刷新页面的时候触发该事件。该事件会自动调用,也可以让程序员手动调用。

方法名称

onPageView

发送的数据

ver=1&en=e_pv&pl=website&sdk=js&b_rst=1920*1080&u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN&u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449137597979&ht=www.bjsxt.com%3A8080&p_url=http%3A%2F%2Fwww.bjsxt.com%3A8080%2Fvst_track%2Findex.html

chargeRequest事件:当用户下订单的时候触发该事件,该事件需要程序主动调用。

方法名称

onChargeReque

发送的数据

u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&c_time=1449139048231&

oid=orderid123&notallow=%E4%BA%A7%E5%93%81%E5%90%8D%E7%A7%B0&

cua=1000&cut=%E4%BA%BA%E6%B0%91%E5%B8%81&pt=%E6%B7%98%E5%AE%9D&

ver=1&en=e_crt&pl=website&sdk=js&b_rst=1920*1080&

u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20

(Windows%20NT%206.1%3B%20WOW64)%20AppleWebKit%2F5

37.1%20(KHTML%2C%20like%20Gecko)%20Chrome%2F21.0.

1180.77%20Safari%2F537.1&l=zh-CN

参数

类型

是否必填

描述

orderId

string

订单id

orderName

String

产品购买描述名称

currencyAmount

double

订单价格

currencyType

String

货币类型

paymentType

String

支付方式

Event事件:

当访客/用户触发业务定义的事件后,前端程序调用该方法。

方法名称

onEventDuratie

发送的数据

ca=%E7%B1%BB%E5%9E%8B&ac=%E5%8A%A8%E4%BD%9C&c_time=144913951266

5&u_sd=8E9559B3-DA35-44E1-AC98-85EB37D1F263&kv_p_url=http%3A%2F%2Fwwwbjsxt..com%3A8080%

2Fvst_track%2Findex.html&kv_%E5%B1%9E%E6%80%A7key=%E5%B1

%9E%E6%80%A7value&du=1000&ver=1&en=e_e&pl=website&sdk=js&

b_rst=1920*1080&u_ud=12BF4079-223E-4A57-AC60-C1A04D8F7A2F&b_iev=Mozilla%2F5.0%20(Windows%20NT%206.

1%3B%20WOW64)%20AppleWebKit%2F537.1%20(KHTML%2C%20lik

e%20Gecko)%20Chrome%2F21.0.1180.77%20Safari%2F537.1&l=zh-CN

参数

类型

是否必填

描述

category

string

自定义事件名称

action

String

自定义事件动作

map

map

其他参数

duration

long

事件持续时间

其他api方法:在这里只介绍设置会员id的方法,其他的辅助方法到时候编写js的时候

设置会员id

方法名称

setMemberId

方法描述

该方法的主要作用是设置会员id,当会员登录后,请调用该方法进行会员id的设置。

参数

类型

是否必填

描述

memberid

string

会员id

数据参数说明:在各个不同事件中收集不同的数据发送到nginx服务器,但是实际上这些收集到的数据还是有一些共性的。下面将所用可能用到的参数描述如下:

参数名称

类型

描述

en

string

事件名称, eg: e_pv

ver

string

版本号, eg: 0.0.1

pl

string

平台, eg: website

sdk

string

Sdk类型, eg: js

b_rst

string

浏览器分辨率,eg: 1800*678

b_iev

string

浏览器信息useragent

u_ud

string

用户/访客唯一标识符

l

string

客户端语言

u_mid

string

会员id,和业务系统一致

u_sd

string

会话id

c_time

string

客户端时间

p_url

string

当前页面的url

p_ref

string

上一个页面的url

tt

string

当前页面的标题

ca

string

Event事件的Category名称

ac

string

Event事件的action名称

kv_*

string

Event事件的自定义属性

du

string

Event事件的持续时间

oid

string

订单id

on

string

订单名称

cua

string

支付金额

cut

string

支付货币类型

pt

string

支付方式

  1. Server数据属性

程序后台事件分析:本项目中在程序后台只会出发chargeSuccess事件,本事件的主要作用是发送订单成功的信息给nginx服务器。发送格式同pc端发送方式, 也是访问同一个url来进行数据的传输。格式为:

最终分析模块

PC端js sdk事件

订单信息分析

chargeSuccess事件

chargeRefund事件

chargeSuccess事件:当会员最终支付成功的时候触发该事件,该事件需要程序主动调用。

方法名称

onChargeSuccess

发送的数据

u_mid=bjsxt&c_time=1449142044528&oid=orderid123&ver=1&en=e_cs&pl=javaserver&sdk=jdk

参数

类型

是否必填

描述

orderId

string

订单id

memberId

string

会员id

chargeRefund事件:当会员进行退款操作的时候触发该事件,该事件需要程序主动调用。

方法名称

onChargeRefund

发送的数据

u_mid=bjsxt&c_time=1449142044528&oid=orderid123&ver=1&en=e_cr&pl=jdk&sdk=java

参数

类型

是否必填

描述

orderId

string

订单id

memberId

string

会员id

集成方式:直接将java的sdk引入到项目中即可,或者添加到classpath中。

数据参数说明参数描述如下:

参数名称

类型

描述

en

string

事件名称, eg: e_cs

ver

string

版本号, eg: 0.0.1

pl

string

平台, eg: website,javaweb,php

sdk

string

Sdk类型, eg: java

u_mid

string

会员id,和业务系统一致

c_time

string

客户端时间

oid

string

订单id

项目业务需求

在本次项目中我们分别从七个大的角度来进行分析,分别为:用户基本信息分析模块、浏览器信息分析模块、地域信息分析模块、用户浏览深度分析模块、外链数据分析模块、订单分析模块以及事件分析模块。下面就每个模块进行最终展示的分析。

注意几个概念:

用户/访客:表示同一个浏览器代表的用户。唯一标示用户

会员:表示网站的一个正常的会员用户。

会话:一段时间内的连续操作,就是一个会话中的所有操作。

Pv:访问页面的数量

在本次项目中所有的计数都是去重过的。比如:活跃用户/访客,计算uuid的去重后的个数。

用户基本信息分析模块

用户基本信息分析模块主要是从用户/访客和会员两个主要角度分析浏览相关信息,包括但不限于新增用户,活跃用户,总用户,新增会员,活跃会员,总会员以及会话分析等。下面就各个不同的用户信息角度来进行分析:

用户分析:该分析主要分析新增用户、活跃用户以及总用户的相关信息。新访客:老访客(活跃访客中) =  1:7~10

大数据项目实战——大数据日志系统构建_数据分析_08

会员分析

该分析主要分析新增会员、活跃会员以及总会员的相关信息。

大数据项目实战——大数据日志系统构建_数据_09

会话分析

该分析主要分析会话个数、会话长度和平均会话长度相关的信息。

大数据项目实战——大数据日志系统构建_外链_10

Hourly分析

该分析主要分析每天每小时的用户、会话个数以及会话长度的相关信息。

大数据项目实战——大数据日志系统构建_数据分析_11

浏览器信息分析模块

在用户基本信息分析的基础上添加一个浏览器这个维度信息。浏览器用户分析:同用户分析。

大数据项目实战——大数据日志系统构建_数据分析_12

浏览器会员分析

同会员分析。

大数据项目实战——大数据日志系统构建_hadoop_13

浏览器会话分析

同会话分析。

大数据项目实战——大数据日志系统构建_数据_14

浏览器PV分析

分析各个浏览器的pv值。

大数据项目实战——大数据日志系统构建_外链_15

地域信息分析模块:主要分析各个不同省份的用户和会员情况。

活跃访客地域分析:分析各个不同地域的活跃访客数量。


跳出率分析:分析各个不同地域的跳出率情况。

大数据项目实战——大数据日志系统构建_外链_16

用户访问深度分析模块

该模块主要分析用户的访问记录的深度

大数据项目实战——大数据日志系统构建_外链_17

外链数据分析模块

主要分析各个不同外链端带来的用户访问量数据。

外链偏好分析:分析各个外链带来的活跃访客数量。

大数据项目实战——大数据日志系统构建_hadoop_18

外链会话(跳出率)分析

分析会话相关信息,并计算相关会话跳出率的情况。

大数据项目实战——大数据日志系统构建_外链_19

订单数据分析模块

主要分析订单的相关情况

大数据项目实战——大数据日志系统构建_数据分析_20

事件分析模块

在本次项目中,只选用一个事件案例进行分析,就是订单相关的一个事件分析。

大数据项目实战——大数据日志系统构建_hadoop_21

项目系统优化

--Spark Stream实时计算


大数据项目实战——大数据日志系统构建_数据_22