zoukankan      html  css  js  c++  java
  • 《OD学hadoop》20160903某旅游网项目实战

    一、大数据的落地点

    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

  • 相关阅读:
    《架构真经》读后感2
    css的引入
    交流会发言
    css学习
    数据结构-哈希表、二叉排序数
    软工人学习日常
    Java包、类、方法、变量、常量命名规范
    数据库命名规范
    学生信息系统jsp界面
    学生信息系统servlet层
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5836932.html
Copyright © 2011-2022 走看看