关于大数据:尚硅谷数仓实战之1项目需求及架构设计

34次阅读

共计 5108 个字符,预计需要花费 13 分钟才能阅读完成。

@TOC

数仓笔记

数据仓库和数据集市详解:ODS、DW、DWD、DWM、DWS、ADS

尚硅谷数仓实战之 1 我的项目需要及架构设计

尚硅谷数仓实战之 2 数仓分层 + 维度建模

尚硅谷数仓实战之 3 数仓搭建

尚硅谷数据仓库 4.0 视频教程

B 站中转:2021 新版电商数仓 V4.0 丨大数据数据仓库我的项目实战
百度网盘:https://pan.baidu.com/s/1FGUb…,提取码:yyds
阿里云盘:https://www.aliyundrive.com/s…,提取码:335o

第 2 章 我的项目需要及架构设计

需要剖析

  • 用户行为数据采集平台搭建
  • 业务数据采集平台搭建
  • 数据仓库维度建模
  • 业务埋点
  • 即席查问工具,随时进行指标剖析
  • 集群监控,异样报警
  • 元数据管理
  • 品质监控
  • 权限治理

我的项目框架

技术选型

思考因素:数据量大小、业务需要、行业内教训、技术成熟度、保护老本、总成本运算

相干技术列举:

数据流程设计

依据需要抉择适合的技术,设计规划具体的数据仓库架构流程

框架版本选型

尚硅谷测试稳固适配的版本

服务器选型

集群规模

集群资源规划设计

在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产工作,测试集群用于上线前代码编写和测试。

1)生产集群

(1)耗费内存的离开(2)数据传输数据比拟严密的放在一起(Kafka、Zookeeper)(3)客户端尽量放在一到两台服务器上,不便内部拜访(4)有依赖关系的尽量放到同一台服务器(例如:Hive 和 Azkaban Executor)
1 2 3 4 5 6 7 8 9 10
nn nn dn dn dn dn dn dn dn dn
rm rm nm nm nm nm nm nm
nm nm
zk zk zk
kafka kafka kafka
Flume Flume flume
Hbase Hbase Hbase
hive hive
mysql mysql
spark spark
Azkaban Azkaban ES ES

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
Spark
Kylin
HBase HMaster
HRegionServer
Superset
Atlas
Solr Jar
服务数总计 19 8 8

第 3 章 数据生成模块

指标数据

咱们要收集和剖析的数据次要包含 页面数据 事件数据 曝光数据 启动数据 谬误数据

页面

页面数据次要记录一个页面的用户拜访状况,包含拜访工夫、停留时间、页面门路等信息。

字段名称 字段形容
page_id 页面 idhome(” 首页 ”),category(” 分类页 ”),discovery(” 发现页 ”),top_n(” 热门排行 ”),favor(” 珍藏页 ”),search(” 搜寻页 ”),good_list(” 商品列表页 ”),good_detail(” 商品详情 ”),good_spec(” 商品规格 ”),comment(” 评估 ”),comment_done(” 评估实现 ”),comment_list(” 评估列表 ”),cart(” 购物车 ”),trade(” 下单结算 ”),payment(” 领取页面 ”),payment_done(” 领取实现 ”),orders_all(” 全副订单 ”),orders_unpaid(” 订单待领取 ”),orders_undelivered(” 订单待发货 ”),orders_unreceipted(” 订单待收货 ”),orders_wait_comment(” 订单待评估 ”),mine(” 我的 ”),activity(” 流动 ”),login(” 登录 ”),register(” 注册 ”);
last_page_id 上页 id
page_item_type 页面对象类型 sku_id(” 商品 skuId”),keyword(” 搜寻关键词 ”),sku_ids(” 多个商品 skuId”),activity_id(” 流动 id”),coupon_id(” 购物券 id”);
page_item 页面对象 id
sourceType 页面起源类型 promotion(” 商品推广 ”),recommend(” 算法举荐商品 ”),query(” 查问后果商品 ”),activity(” 促销流动 ”);
during_time 停留时间(毫秒)
ts 跳入工夫

事件

事件数据次要记录利用内一个具体操作行为,包含操作类型、操作对象、操作对象形容等信息。

字段名称 字段形容
action_id 动作 idfavor_add(” 增加珍藏 ”),favor_canel(” 勾销珍藏 ”),cart_add(” 增加购物车 ”),cart_remove(” 删除购物车 ”),cart_add_num(” 减少购物车商品数量 ”),cart_minus_num(” 缩小购物车商品数量 ”),trade_add_address(” 减少收货地址 ”),get_coupon(” 支付优惠券 ”); 注:对于下单、领取等业务数据,可从业务数据库获取。
item_type 动作指标类型 sku_id(” 商品 ”),coupon_id(” 购物券 ”);
item 动作指标 id
ts 动作工夫

曝光

曝光数据次要记录页面所曝光的内容,包含曝光对象,曝光类型等信息。

字段名称 字段形容
displayType 曝光类型 promotion(” 商品推广 ”),recommend(” 算法举荐商品 ”),query(” 查问后果商品 ”),activity(” 促销流动 ”);
item_type 曝光对象类型 sku_id(” 商品 skuId”),activity_id(” 流动 id”);
item 曝光对象 id
order 曝光程序

启动

启动数据记录利用的启动信息。

字段名称 字段形容
entry 启动入口 icon(” 图标 ”),notification(” 告诉 ”),install(” 装置后启动 ”);
loading_time 启动加载工夫
open_ad_id 开屏广告 id
open_ad_ms 广告播放工夫
open_ad_skip_ms 用户跳过广告工夫
ts 启动工夫

谬误

谬误数据记录利用应用

过程中的错误信息,包含谬误编号及错误信息。

字段名称 字段形容
error_code 错误码
msg 错误信息

数据埋点

支流埋点形式(理解)

目前支流的埋点形式,有 代码埋点 (前端 / 后端)、 可视化埋点 全埋点 三种。

代码埋点 是通过调用埋点 SDK 函数,在须要埋点的业务逻辑功能位置调用接口,上报埋点数据。例如,咱们对页面中的某个按钮埋点后,当这个按钮被点击时,能够在这个按钮对应的 OnClick 函数外面调用 SDK 提供的数据发送接口,来发送数据。

可视化埋点只须要研发人员集成采集 SDK,不须要写埋点代码,业务人员就能够通过拜访剖析平台的“圈选”性能,来“圈”出须要对用户行为进行捕获的控件,并对该事件进行命名。圈选结束后,这些配置会同步到各个用户的终端上,由采集 SDK 依照圈选的配置主动进行用户行为数据的采集和发送。

全埋点 是通过在产品中嵌入 SDK,前端主动采集页面上的全副用户行为事件,上报埋点数据,相当于做了一个对立的埋点。而后再通过界面配置哪些数据须要在零碎外面进行剖析。

埋点数据上报机会

埋点数据上报机会包含两种形式。

形式一,在来到该页面时,上传在这个页面产生的所有数据(页面、事件、曝光、谬误等)。长处,批处理,缩小了服务器接收数据压力。毛病,不是特地及时。

形式二,每个事件、动作、谬误等,产生后,立刻发送。长处,响应及时。毛病,对服务器接收数据压力比拟大。

本次我的项目采纳形式一埋点。

埋点数据日志构造

咱们的日志构造大抵可分为两类,一是一般页面埋点日志,二是启动日志。

一般页面日志构造如下,每条日志蕴含了,以后页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还蕴含了一系列公共信息,包含设施信息,地理位置,利用信息等,即下边的 common 字段。

(1)一般页面埋点日志格局

{

 "common": {          -- 公共信息

  "ar": "230000",        -- 地区编码

  "ba": "iPhone",        -- 手机品牌

  "ch": "Appstore",       -- 渠道

  "is_new": "1",-- 是否首日应用,首次应用的当日,该字段值为 1,过了 24:00,该字段置为 0

  "md": "iPhone 8",       -- 手机型号

  "mid": "YXfhjAYH6As2z9Iq", -- 设施 id

  "os": "iOS 13.2.9",      -- 操作系统

  "uid": "485",         -- 会员 id

  "vc": "v2.1.134"       -- app 版本号

 },

"actions": [-- 动作(事件)  

  {

   "action_id": "favor_add",  -- 动作 id

   "item": "3",          -- 指标 id

   "item_type": "sku_id",    -- 指标类型

   "ts": 1585744376605      -- 动作工夫戳

  }

 ],

 "displays": [

  {

   "displayType": "query",     -- 曝光类型

   "item": "3",           -- 曝光对象 id

   "item_type": "sku_id",     -- 曝光对象类型

   "order": 1,           -- 呈现程序

   "pos_id": 2            -- 曝光地位

  },

  {

   "displayType": "promotion",

   "item": "6",

   "item_type": "sku_id",

   "order": 2, 

   "pos_id": 1

  }

 ],

 "page": {            -- 页面信息

  "during_time": 7648,     -- 持续时间毫秒

  "item": "3",          -- 指标 id

  "item_type": "sku_id",    -- 指标类型

  "last_page_id": "login",   -- 上页类型

  "page_id": "good_detail",  -- 页面 ID

  "sourceType": "promotion"  -- 起源类型

 },

"err":{           -- 谬误

"error_code": "1234",    -- 错误码

  "msg": "***********"    -- 错误信息

},

 "ts": 1585744374423  -- 跳入工夫戳,何时发送到服务器

}
(2)启动日志格局

启动日志构造绝对简略,次要蕴含公共信息,启动信息和错误信息。

{

 "common": {

  "ar": "370000",

  "ba": "Honor",

  "ch": "wandoujia",

  "is_new": "1",

  "md": "Honor 20s",

  "mid": "eQF5boERMJFOujcp",

  "os": "Android 11.0",

  "uid": "76",

  "vc": "v2.1.134"

 },

 "start": {  

  "entry": "icon",     --icon 手机图标  notice 告诉  install 装置后启动

  "loading_time": 18803,  -- 启动加载工夫

  "open_ad_id": 7,     -- 广告页 ID

  "open_ad_ms": 3449,   -- 广告总共播放工夫

  "open_ad_skip_ms": 1989  -- 用户跳过广告时点

 },

"err":{           -- 谬误

"error_code": "1234",    -- 错误码

  "msg": "***********"    -- 错误信息

},

 "ts": 1585744304000

}
​```xxxxxxxxxx {"common": {  "ar": "370000",  "ba": "Honor",  "ch": "wandoujia",  "is_new": "1",  "md": "Honor 20s",  "mid": "eQF5boERMJFOujcp",  "os": "Android 11.0",  "uid": "76",  "vc": "v2.1.134"}, "start": {"entry": "icon",     --icon 手机图标  notice 告诉  install 装置后启动  "loading_time": 18803,  -- 启动加载工夫  "open_ad_id": 7,     -- 广告页 ID  "open_ad_ms": 3449,   -- 广告总共播放工夫  "open_ad_skip_ms": 1989  -- 用户跳过广告时点},"err":{-- 谬误 "error_code": "1234",    -- 错误码  "msg": "***********"    -- 错误信息}, "ts": 1585744304000}

正文完
 0