一、大数据的落地点

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

《OD学hadoop》20160903某旅游网项目实战的更多相关文章

  1. 《OD学hadoop》20160904某旅游网项目实战

    一.ETL操作 抽取数据 日志格式: 分割符号:^A IP地址 服务器时间 二.Java工程 1. 创建项目 copy代码及配置文件 2. 改配置 core-site.xml hbase-site.x ...

  2. 《OD学hadoop》20160910某旅游网项目实战

    一.event事件分析 叶子节点只计算一次 父节点的触发次数由子节点的数量节点 事件流:是由业务人员定义的一系列的具有前后顺序的事件构成的用户操作行为,至少包括两个事件以上. 目标:以事件流为单位,分 ...

  3. 《OD学hadoop》第三周0710

    一.分布式集群安装1. Hadoop模式本地模式.伪分布模式.集群模式datanode 使用的机器上的磁盘,存储空间nodemanager使用的机器上的内存和CPU(计算和分析数据) 2. 搭建环境准 ...

  4. 《OD学hadoop》第二周0702

    大数据离线计算hadoop2.x 三周(6天) markdown文本剪辑器 罗振宇--跨年演讲,时间的朋友 http://tech.163.com/16/0101/11/BC87H8DF000915B ...

  5. 《OD学hadoop》第一周0625

    一.实用网站 1. linux内核版本 www.kernel.org 2. 查看网站服务器使用的系统  www.netcraft.com 二.推荐书籍 1. <Hadoop权威指南> 1- ...

  6. 《OD学hadoop》第四周0716

    7.16 一.回顾 二.HDFS Federation(联盟) Hadoop 2.2.0发布新特性 很多的大公司都在使用:BAT HDFS Federation + HDFS HA架构 互相隔开,但是 ...

  7. 《OD学hadoop》第三周0709

    一.MapReduce编程模型1. 中心思想: 分而治之2. map(映射)3. 分布式计算模型,处理海量数据4. 一个简单的MR程序需要制定map().reduce().input.output5. ...

  8. 《OD学hadoop》第二周0703

    hdfs可视化界面: http://beifeng-hadoop-01:50070/dfshealth.html#tab-overview yarn可视化界面: http://beifeng-hado ...

  9. 《OD学hadoop》Hadoop前置

    一.Hadoop 前置课程 1. Linux系统,基本命令 2. Java语言,JavaSE相关知识 3. MySQL基本的DML和DDL SQL on Hadoop

随机推荐

  1. 给手机发验证码 综合使用 (忘记密码处理 php发验证码 重置用户密码)

    前台页面 提取手机号调用 jQuery的ajax,到发送验证码 [php] view plain copy <title>找回密码 - 2015年xxx报名系统</title> ...

  2. Linux-NoSQL之Redis(一)

    1.Redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(s ...

  3. leetcode 34 Search for a Range(二分法)

    Search for a Range Given a sorted array of integers, find the starting and ending position of a give ...

  4. 【二叉树的递归】07路径组成数字的和【Sum Root to Leaf Numbers】

    ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,节点的值仅限于从0 ...

  5. bzoj 3083 遥远的国度 —— 树链剖分

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3083 换根后路径还是不变,子树分类讨论一下,树剖后线段树维护即可. 代码如下: #inclu ...

  6. 【转】Pro Android学习笔记(十):了解Intent(上)

    目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...

  7. hdu 5616 Jam's balance 正反背包+转换

    http://acm.hdu.edu.cn/showproblem.php?pid=5616 思路 题目中蕴含着两种需要计算的重量 1. 从所有的砝码中挑出任意种2.(转换的思想)在天平的两端都挑出这 ...

  8. 【转】深刻理解render 和 redirect_to

    由于最近老是在表单提交后出现没有反应的现象,发现是在action中的使用render 和 redirect_to的原因,于是就想搞清楚他两真正的区别在哪里,上一遍的blog也谈到了这二者的区别,但是有 ...

  9. linux命令-vim一般模式下复制剪切粘贴

    删除光标后的一个字符 x 删除光标前的一个字符 shift+x 删除指定个数的字符 数字+x 删除一行字符 dd 剪切指定行数  数字dd  3dd 剪切3行 其实并没有删掉而是保存着剪切板里 粘贴在 ...

  10. 10个C语言经典

    1.计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.C语言实现的代码如下: /* t3ing Fibonac ...