一、大数据的落地点
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