当前位置: 首页 > article >正文

大数据项目之电商数仓一(用户行为采集)

一、数据仓库概念

数据仓库(Data Warehouse)

  是为企业所有决策制定过程,提供所有系统数据支持的战略集合。

图片

二、项目需求及架构设计

2.1 项目需求分析

  1、项目需求

   1)用户行为数据采集平台搭建

   2)业务数据采集平台搭建

   3)数据仓库维度建模

      4)分析:用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近100。

      5)采用即席查询工具,随时进行指标分析

      6)对集群性能进行监控,发生异常需要报警

    7)元数据管理

      8)质量监控

2.2 项目框架

2.2.1 技术选型

技术选型主要需要考虑的因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算

  数据采集传输:Flume、Kafka、Sqoop、Logstash、DataX、

  数据存储:Mysql、HDFS、HBase、Redis、MongoDB

  数据计算:Hive、Tez、Spark、Flink、Storm

  数据查询:Presto、Druid、Impala、Kylin

  数据可视化:Echarts、Superset、QuickBI、DataV

  任务调度:Azkaban、Oozie

  集群监控:Zabbix

  元数据管理:Atlas

  数据质量监控:Griffin

2.2.2 系统数据流程设计

图片

2.2.3 框架版本选型

图片

2.2.4 服务器选型

  服务器是选择物理机还是云主机?

1)物理机:

  128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌单台报价4万出头。一般物理机寿命5年左右。

2)云主机:

  以阿里云为例,和上面大致相同配置,每年5万。

2.2.5 集群资源规划设计

1、集群规模
1)如何确认集群规模?(按每台服务器8T磁盘,128G内存)

(1)按每天日活跃用户100万,每人一天平均100条:100万*100条 = 1亿条

(2)每条日志1K左右,每天1亿条:100000000 / 1024 /1024 = 约100G

(3)半年内不扩容服务器来算:100G * 180 天 = 约18T

(4)保存3个副本:18T * 3 = 54T

(5)预留20%~30%Buffer=54T/0.7=77T

(6)需要约8T*10台服务器

2)如果要考虑数仓分层?数据采用压缩?需要重新计算
2、集群服务器规划

服务名称

子服务

服务器

hadoop102

服务器

hadoop103

服务器

hadoop104

HDFS

NameNode

DataNode

SecondaryNameNode

Yarn

NodeManager

Resourcemanager

Zookeeper

Zookeeper Server

Flume(采集日志)

Flume

Kafka

Kafka

Flume(消费Kafka)

Flume

Hive

Hive

MySQL

MySQL

Sqoop

Sqoop

Presto

Coordinator

Worker

Azkaban

AzkabanWebServer

AzkabanExecutorServer

Druid

Druid

Kylin

Hbase

HMaster

HRegionServer

Superset

Atlas

Solr

Jar

Griffin

服务数总计

19

9

9

三、数据生成模块

3.1 埋点数据基本格式

公共字段:基本所有安卓手机都包含的字段

业务字段:埋点上报的字段,有具体的业务类型

下面就是一个示例,表示业务字段的上传。

{

"ap":"xxxxx",//项目数据来源 app pc

"cm": {  //公共字段

      "mid": "",  // (String) 设备唯一标识

        "uid": "",  // (String) 用户标识

        "vc": "1",  // (String) versionCode,程序版本号

        "vn": "1.0",  // (String) versionName,程序版本名

        "l": "zh",  // (String) language系统语言

        "sr": "",  // (String) 渠道号,应用从哪个渠道来的

        "os": "7.1.1",  // (String) Android系统版本

        "ar": "CN",  // (String) area区域

        "md": "BBB100-1",  // (String) model手机型号

        "ba": "blackberry",  // (String) brand手机品牌

        "sv": "V2.2.1",  // (String) sdkVersion

        "g": "",  // (String) gmail

        "hw": "1620x1080",  // (String) heightXwidth,屏幕宽高

        "t": "1506047606608",  // (String) 客户端日志产生时的时间

        "nw": "WIFI",  // (String) 网络模式

        "ln": 0,  // (double) lng经度

        "la": 0  // (double) lat 纬度

    },

"et":  [  //事件

            {

                "ett": "1506047605364",  //客户端事件产生时间

                "en": "display",  //事件名称

                "kv": {  //事件结果,以key-value形式自行定义

                    "goodsid": "236",

                    "action": "1",

                    "extend1": "1",

"place": "2",

"category": "75"

                }

            }

        ]

}

示例日志(服务器时间戳 | 日志):

1540934156385|{

    "ap": "gmall",

    "cm": {

        "uid": "1234",

        "vc": "2",

        "vn": "1.0",

        "la": "EN",

        "sr": "",

        "os": "7.1.1",

        "ar": "CN",

        "md": "BBB100-1",

        "ba": "blackberry",

        "sv": "V2.2.1",

        "g": "abc@gmail.com",

        "hw": "1620x1080",

        "t": "1506047606608",

        "nw": "WIFI",

        "ln": 0

    },

        "et": [

            {

                "ett": "1506047605364",  //客户端事件产生时间

                "en": "display",  //事件名称

                "kv": {  //事件结果,以key-value形式自行定义

                    "goodsid": "236",

                    "action": "1",

                    "extend1": "1",

"place": "2",

"category": "75"

                }

            },{

              "ett": "1552352626835",

              "en": "active_background",

              "kv": {

                   "active_source": "1"

              }

           }

        ]

    }

}

下面是各个埋点日志格式。其中商品点击属于信息流的范畴

3.2 事件日志数

3.2.1 商品列表页(loading)

事件名称:loading

标签

含义

action

动作:开始加载=1,加载成功=2,加载失败=3

loading_time

加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成功或加载失败才上报时间)

loading_way

加载类型:1-读取缓存,2-从接口拉新数据
 (加载成功才上报加载类型)

extend1

扩展字段 Extend1

extend2

扩展字段 Extend2

type

加载类型:自动加载=1,用户下拽加载=2,底部加载=3(底部条触发点击底部提示条/点击返回顶部加载)

type1

加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

3.2.2 商品点击(display)

事件标签:display

标签

含义

action

动作:曝光商品=1,点击商品=2,

goodsid

商品ID(服务端下发的ID)

place

顺序(第几条商品,第一条为0,第二条为1,如此类推)

extend1

曝光类型:1 - 首次曝光 2-重复曝光

category

分类ID(服务端定义的分类ID)

3.2.3 商品详情页(newsdetail)

事件标签:newsdetail

标签

含义

entry

页面入口来源:应用首页=1、push=2、详情页相关推荐=3

action

动作:开始加载=1,加载成功=2(pv),加载失败=3, 退出页面=4

goodsid

商品ID(服务端下发的ID)

show_style

商品样式:0、无图、1、一张大图、2、两张图、3、三张小图、4、一张小图、5、一张大图两张小图

news_staytime

页面停留时长:从商品开始加载时开始计算,到用户关闭页面所用的时间。若中途用跳转到其它页面了,则暂停计时,待回到详情页时恢复计时。或中途划出的时间超过10分钟,则本次计时作废,不上报本次数据。如未加载成功退出,则报空。

loading_time

加载时长:计算页面开始加载到接口返回数据的时间 (开始加载报0,加载成功或加载失败才上报时间)

type1

加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

category

分类ID(服务端定义的分类ID)

3.2.4 广告(ad)

事件名称:ad

标签

含义

entry

入口:商品列表页=1  应用首页=2 商品详情页=3

action

动作:广告展示=1 广告点击=2

contentType

Type: 1 商品 2 营销活动  

displayMills

展示时长 毫秒数

itemId

商品id

activityId

营销活动id

3.2.5 消息通知(notification)

事件标签:notification

标签

含义

action

动作:通知产生=1,通知弹出=2,通知点击=3,常驻通知展示(不重复上报,一天之内只报一次)=4

type

通知id:预警通知=1,天气预报(早=2,晚=3),常驻=4

ap_time

客户端弹出时间

content

备用字段

3.2.6 用户后台活跃(active_background)

事件标签: active_background

标签

含义

active_source

1=upgrade,2=download(下载),3=plugin_upgrade

3.2.7 评论(comment)

描述:评论表

序号

字段名称

字段描述

字段类型

长度

允许空

缺省值

1

comment_id

评论表

int

10,0

2

userid

用户id

int

10,0

0

3

p_comment_id

父级评论id(为0则是一级评论,不为0则是回复)

int

10,0

4

content

评论内容

string

1000

5

addtime

创建时间

string

6

other_id

评论的相关id

int

10,0

7

praise_count

点赞数量

int

10,0

0

8

reply_count

回复数量

int

10,0

0

3.2.8 收藏(favorites)

描述:收藏

序号

字段名称

字段描述

字段类型

长度

允许空

缺省值

1

id

主键

int

10,0

2

course_id

商品id

int

10,0

0

3

userid

用户ID

int

10,0

0

4

add_time

创建时间

string

3.2.9 点赞(praise)

描述:所有的点赞表

序号

字段名称

字段描述

字段类型

长度

允许空

缺省值

1

id

主键id

int

10,0

2

userid

用户id

int

10,0

3

target_id

点赞的对象id

int

10,0

4

type

点赞类型 1问答点赞 2问答评论点赞 3 文章点赞数4 评论点赞

int

10,0

5

add_time

添加时间

string

3.2.10 错误日志

errorBrief

错误摘要

errorDetail

错误详情

3.3 启动日志数据

事件标签: start

标签

含义

entry

入口:push=1,widget=2,icon=3,notification=4, lockscreen_widget =5

open_ad_type

开屏广告类型:  开屏原生广告=1, 开屏插屏广告=2

action

状态:成功=1  失败=2

loading_time

加载时长:计算下拉开始到接口返回数据的时间,(开始加载报0,加载成功或加载失败才上报时间)

detail

失败码(没有则上报空)

extend1

失败的message(没有则上报空)

en

日志类型start

{


http://www.kler.cn/a/419022.html

相关文章:

  • 一万台服务器用saltstack还是ansible?
  • Transformers在计算机视觉领域中的应用【第1篇:ViT——Transformer杀入CV界之开山之作】
  • windows docker 入门
  • OpenGauss数据库介绍
  • centos更换源文件,换源,替换源
  • Web 端网站后台裁剪功能:提升图像管理效率的利器
  • Linux互斥量读写锁
  • spring boot编写注意事项
  • 亚马逊IP关联是什么?
  • 【详细介绍及演示】Flink之checkpoint检查点的使用
  • 单点登录深入详解之技术方案总结
  • 详解Qt Pdf QPdfDocumentRenderOptions选项类
  • 【大数据测试之:RabbitMQ消息列队测试-发送、接收、持久化、确认、重试、死信队列并处理消息的并发消费、负载均衡、监控等】详细教程---保姆级
  • 大语言模型---Dropout 的定义;Dropout 减少过拟合的原因;Dropout 的实现
  • 关于js解密中遇到base64时的坑
  • 22智能 图
  • 【docker】8. 镜像仓库实战
  • oracle日期格式查询
  • ajax都有哪些优点和缺点?
  • Python实现有向图及查找
  • 深度学习中的迁移学习:应用与实践
  • 【Linux】gdb / cgdb 调试 + 进度条
  • kubernetes组件ETCD未授权访问
  • TransmittableThreadLocal维护Token中的userId
  • Hexo博客在多个设备同步
  • 数据库原理-期末复习基础知识第二弹