《OD学hadoop》20160903某旅游网项目实战

时间:2023-03-08 21:54:52

一、大数据的落地点

1.数据出售

数据商城:以卖数据为公司的核心业务

2. 数据分析

百度统计

友盟

GA

IBM analysis

3.搜索引擎

4. 推荐系统

mahout

百分比

5.精准营销

(1)广告投入:网站所有者集成广告联盟的js->访问者访问页面->js发送用户数据->广告联盟发送一个可以报价的广告位信息给所有的广告公司(报价是否、价格多少)

->广告公司接受到这个报价信息,根据携带的用户信息计算用户点击的概率(用户点击模型)->广告公司将是否报价信息以及报价多少的信息发送给广告联盟->广告联盟选取高报价进行展示

用户信息

用户点击广告信息

第三方过来

(2)金融产品投顾

现阶段不算成熟

6. 数据预测

天气预测

路况预测

城市发展预测

7. 人工智能

数据挖掘

机器学习

二、大数据分析平台

1. 分析收集得到的数据,根据最终结果进行业务指导。

两大类;

(1)离线数据分析平台

对数据实时性要求不高的

对机器的性能要求比较低

MapReduce Hive Pig

(2)实时数据分析平台

对实时性要求严格,必须没有时间延迟的

对内存、CPU的要求比较高

storm,spark streaming

2. 为什么自己做大数据分析平台

1)使用第三方的

优点:简单

缺点:

有的需要收费,有的功能比较低

数据不在本公司,后续的一些定制的开发没有进行

没法定制化

2)自己做

优点:

数据在公司,后续的业务系统开发比较容易

缺点:

从无到有做一个系统出来,开销比较大

需要人员参与

三、数据处理流程

1. 数据收集

保存HDF,实时的直接进入数据分析

2. 数据处理&分析

redis,mongodb

关系型数据库

HDFS相关生态圈上

3. 数据结果可视化

(可选)

4. 数据结果应用

推荐

用户画像

数据分析(数据分析师)

四、分析平台的数据来源

1. 服务器日志数据

Nginx日志,服务器监控日志等

2. 业务日志

log4j

3. 业务数据

用户基本信息、订单信息、产品信息等

4. 用户行为数据

从客户端收集得到的数据

用户行为:在页面上进行的任何操作都是用户行为

以监听事件的方式来记录数据

5. 购买的数据

6. 爬虫的数据

五、项目定位

大数据分析平台一部分,结合之前所学的hadoop生态圈的相关知识进行讲解。

1 . 需求:收集各个客户端的用户行为数据,进行数据分析处理,最终将结果展示出来

2. 核心关注点

3. 重点概念:

1)访客/用户:标识访问网站的用户

区分:

PC端、移动端的web端:

(1)采用IP来区分用户

(2)采用客户端种植cookie的方式,第一次访问就产生一个唯一uuid,保存到cookie中,有效期10年

移动端:

(1)采用机器码

(2)生成uuid,保存到磁盘中

分析指标:

新增用户

活跃用户

总用户

流失用户

回流用户

2)会员:业务系统的注册用户,而且登录,一般来讲,直接采用业务系统的umid来区分。

分析指标:

新增会员

活跃会员

总会员

流失会员

回流会员

访客转会员比率

  新访客转换率

  老访客转换率

3)会话:用户进入系统到离开系统的这段时间

实现方式/会话范围

(1)采用浏览器的session进行会话区分

(2)在cookie种植一个上一个操作的访问时间,cookie设置过期时间,设置为6分钟,那么6分钟后,再访问就是一个新的会话。

分析指标

(1)会话数量

(2)会话长度(会话的总时间点)

(3)跳出会话数量(只访问一次的会话数量)

外链:

用户通过第三方网站访问我们的系统

分析广告投放的预测效果是否达到

分析指标:

带来的访客数量

带来的会话数量

带来的订单相关信息

外率跳出率

PV(page view):页面浏览量

UI(unique vistor):唯一访问用户量,指通过网络、流量访问系统给的自然人

独立IP数量:ip的数量,辅助UI来展示数据

dv(depth view):访问深度

各个访问深度的用户数量

六、技术架构

1, 技术层面

架构分为:

  数据收集层

  数据处理层

  数据展示层

2. 技术方案设计

1)数据收集方案

方式

PC端、移动web端:jsp sdk

android、ios等移动端:android/ios sdk

后台系统:php sdk,javasdk

基准:以最小单位事件作为数据的收集的单位的。

目标:尽可能的多的收集用户信息数据,降低数据的丢失率。

收集哪些事件:

launch:

pageView: en/p_url/p_ref/tt

event

chargeRequest

chargeSucess

chargeRefund

Nginx服务器会做事件内容扩充:ip地址、服务器时间

ip地址:如果你的服务器经过多层跳转,那么默认获取ip地址的nginx代码一般是无效的。

Nginx接受到数据后:

将数据保存到日志中,nginx的作用完成了

日志数据分割:^A

日志格式:ip地址^A服务器时间^A客户端访问所携带的用户行为数据

flume:

监控nginx的日志文件,将数据实时的写入到hdfs中

为什么不写hbase:

数据需要进行预处理,flume只做数据收集的事,方便后期的bug修复,

nginx服务器搭建:

nginx热备

Flume的企业搭建:

Flume-ng

2)数据展示方案

结果存储在关系型数据库(mysql)

spring + springmvc + mybatis

前后台分离

前端直接展示数据,后端直接返回一个json数据给前端

echarts:百度

highcharts:国外一个公司的产品

mysql-->mybatis-->后台系统(springmvc)-->json数据的方式->前端实现(html+css+javascript+highcharts)

3)数据分析&处理

ETL操作:数据清洗、过滤、补全

数据来源:存在在HDFS上的日志文件

数据处理方式: MapReduce Hive

数据保存位置:HBase

HBase表结构设计:

为什么保存hbase? ->列不统一

热点问题怎么解决?

(1)按天分表,rowkey随机,没有特别规律的一个字节数据

(2)在rowkey(有访问规律)之前,加一个随机数字(其实就是hbase服务器数量取模)

(3)在创建hbase时,会进行预分区

数据处理

MapReduce:

数据流: HBase->mapreduce处理,直接输出到mysql中

Hive:

数据流:HBase->hive表数据外部表关联到hive表中去->hive的hsql语句

分析结果存储到Hfds中-->sqoop将hive分析结果存储到mysql中

七、数据仓库

星型模型:

事实表:stats_xxx

维度表:定位具体维度信息,确定数据,dimension_xxx

分析辅助表:

用户:保存会员id之类的,用户分析新增会员;保存订单数据,chargeRequest,chargeSuccess,chargeRefund数据补全

ip解析库

八、问题思考

1. 怎么将数据保存到mysql中?

mapreduce

hive

2. 维度名称属性怎么转换为id?

九、Nginx服务器

并发能力强,处理访问静态资源速度很快。

1.  http节点

log_format user_log_format '$remote_addr^A$mesc^$request_url';

2. server节点

location ~.*(BEIfeng)\.(gif)${

  #类型

  default_type image/gif;

  #记录日志,存储到一个文件中,文件要求flume进行有权限放回

  access_log /usr/local/nginx/user_logs/access.log user_log_format;

  #访问资源

  root /usr/local/nginx/html;

}

十、js sdk和javasdk

十一、flume

hdfs sink

ha环境中怎么配置

(1)hdfs.path配置成core-site.xml中的fs.defaultFS加具体的数据存储路径

(2)将hadoop环境中的core-site和hdfs-site.xml连个文件copy到conf文件夹中 flume-ng agent --conf ${FLUME_HOME}/conf