1、大数据的落地点javascript
1.数据出售php
数据商城:以卖数据为公司的核心业务css
2. 数据分析html
百度统计前端
友盟java
GAmysql
IBM analysisandroid
3.搜索引擎ios
4. 推荐系统nginx
mahout
百分比
5.精准营销
(1)广告投入:网站全部者集成广告联盟的js->访问者访问页面->js发送用户数据->广告联盟发送一个能够报价的广告位信息给全部的广告公司(报价是否、价格多少)
->广告公司接受到这个报价信息,根据携带的用户信息计算用户点击的几率(用户点击模型)->广告公司将是否报价信息以及报价多少的信息发送给广告联盟->广告联盟选取高报价进行展现
用户信息
用户点击广告信息
第三方过来
(2)金融产品投顾
现阶段不算成熟
6. 数据预测
天气预测
路况预测
城市发展预测
7. 人工智能
数据挖掘
机器学习
2、大数据分析平台
1. 分析收集获得的数据,根据最终结果进行业务指导。
两大类;
(1)离线数据分析平台
对数据实时性要求不高的
对机器的性能要求比较低
MapReduce Hive Pig
(2)实时数据分析平台
对实时性要求严格,必须没有时间延迟的
对内存、CPU的要求比较高
storm,spark streaming
2. 为何本身作大数据分析平台
1)使用第三方的
优势:简单
缺点:
有的须要收费,有的功能比较低
数据不在本公司,后续的一些定制的开发没有进行
无法定制化
2)本身作
优势:
数据在公司,后续的业务系统开发比较容易
缺点:
从无到有作一个系统出来,开销比较大
须要人员参与
3、数据处理流程
1. 数据收集
保存HDF,实时的直接进入数据分析
2. 数据处理&分析
redis,mongodb
关系型数据库
HDFS相关生态圈上
3. 数据结果可视化
(可选)
4. 数据结果应用
推荐
用户画像
数据分析(数据分析师)
4、分析平台的数据来源
1. 服务器日志数据
Nginx日志,服务器监控日志等
2. 业务日志
log4j
3. 业务数据
用户基本信息、订单信息、产品信息等
4. 用户行为数据
从客户端收集获得的数据
用户行为:在页面上进行的任何操做都是用户行为
以监听事件的方式来记录数据
5. 购买的数据
6. 爬虫的数据
5、项目定位
大数据分析平台一部分,结合以前所学的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):访问深度
各个访问深度的用户数量
6、技术架构
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中
7、数据仓库
星型模型:
事实表:stats_xxx
维度表:定位具体维度信息,肯定数据,dimension_xxx
分析辅助表:
用户:保存会员id之类的,用户分析新增会员;保存订单数据,chargeRequest,chargeSuccess,chargeRefund数据补全
ip解析库
8、问题思考
1. 怎么将数据保存到mysql中?
mapreduce
hive
2. 维度名称属性怎么转换为id?
9、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;
}
10、js sdk和javasdk
11、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