1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 1、电商数仓(用户行为采集平台)数据仓库概念、用户行为日志、业务数据、模拟数据、用户行为数据采集模块、日志采集Flume(一)

1、数据仓库概念

1、数据仓库概念

数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。

数据仓库的输入数据通常包括:业务数据、用户行为数据等。

业务数据:就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。

用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。


2、项目需求及架构设计

2.1 项目需求分析

1、采集平台

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

(2)业务数据采集平台

2.2 项目架构

2.2.1 技术选型

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

数据采集传输:Flume、Kafka、DataX、MaxWell

数据储存:MySQL、HDFS、Hbase、Redis

数据计算:Hive、Spark、Flink

数据查询:Presto、ClickHouse

数据可视化:Superset、Sugar

任务调度:DolphinScheduler

集群监控:Zabbix、Prometheus

2.2.2 系统数据流程设计

image.png

2.2.3 框架版本选型

(1)Apache框架版本

框架 版本
Hadoop 3.1.3
Zookeeper 3.5.7
MySQL 5.7.16
Hive 3.1.2
Flume 1.9.0
Kafka 3.0.0
Spark 3.0.0
DataX 3.0.0
Superset 1.3.2
DolphinScheduler 2.0.3
MaxWell 1.29.2
Flink 1.13.0
Redis 6.0.8
Hbase 2.0.5
ClickHouse 20.4.5.36-2

2.2.4 测试集群资源规划设计

服务名称 子服务 服务器(hadoop102) 服务器(hadoop103) 服务器(hadoop104)
HDFS NameNode
HDFS DataNode
HDFS SecondaryNameNode
Yarn ResourceManager
Yarn NodeManager
Zookeeper Zookeeper Server
Flume(采集日志) Flume
Kafka Kafka
Flume(消费kafka日志) Flume
Flume(消费kafka业务) Flume
Hive
MySQL MysQL
DataX
Spark
DolphinScheduler ApiApplicationServer
DolphinScheduler AlertServer
DolphinScheduler MasterServer
DolphinScheduler WorkerServer
DolphinScheduler LoggerServer
Superset Superset
Flink
ClickHouse
Redis
Hbase
服务数总计 20 11 12

3、用户行为日志

3.1 用户行为日志概述

用户行为日志的内容,主要包括用户的各项行为信息以及行为所处的环境信息。收集这些信息的主要目的是优化产品和为各项分析统计指标提供数据支撑。收集这些信息的手段通常为埋点。

目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点等。

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

可视化埋点只需要研发人员集成采集 SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈选完毕后,这些配置会同步到各个用户的终端上,由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送。

全埋点是通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析。

3.2 用户行为日志内容

本项目收集和分析的用户行为信息主要有页面浏览记录、动作记录、曝光记录、启动记录和错误记录。

3.2.1 页面流量记录

页面浏览记录,记录的是访客对页面的浏览行为,该行为的环境信息主要有用户信息、时间信息、地理位置信息、设备信息、应用信息、渠道信息及页面信息等。

3.2.2 动作记录

动作记录,记录的是用户的业务操作行为,该行为的环境信息主要有用户信息、时间信息、地理位置信息、设备信息、应用信息、渠道信息 及动作目标对象信息等。

3.2.3 曝光记录

曝光记录,记录的是曝光行为,该行为的环境信息主要有用户信息、时间信息、地理位置信息、设备信息、应用信息、渠道信息及曝光对象信息等。

3.2.4 启动记录

启动记录,记录的是用户启动应用的行为,该行为的环境信息主要有用户信息、时间信息、地理位置信息、设备信息、应用信息、渠道信息、启动类型及开屏广告信息等。

3.2.5 错误记录

启动记录,记录的是用户在使用应用过程中的报错行为,该行为的环境信息主要有用户信息、时间信息、地理位置信息、设备信息、应用信息、渠道信息、以及可能与报错相关的页面信息、动作信息、曝光信息和动作信息。

3.3 用户行为日志格式

我们的日志结构大致可分为两类,一是页面日志,二是启动日志。

3.3.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
    },
    {
      "displayType": "promotion",
      "item": "9",
      "item_type": "sku_id",
      "order": 3,
      "pos_id": 3
    },
    {
      "displayType": "recommend",
      "item": "6",
      "item_type": "sku_id",
      "order": 4,
      "pos_id": 2
    },
    {
      "displayType": "query ",
      "item": "6",
      "item_type": "sku_id",
      "order": 5,
      "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                --跳入时间戳
}
3.3.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
}


相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
2天前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
1月前
|
SQL 存储 大数据
数据仓库(10)数仓拉链表开发实例
拉链表是数据仓库中特别重要的一种方式,它可以保留数据历史变化的过程,这里分享一下拉链表具体的开发过程。 维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的客户记录。
167 13
数据仓库(10)数仓拉链表开发实例
|
4月前
|
数据采集 监控 OLAP
云数据仓库ADB如何使用数仓版一键诊断功能-前提条件?
云数据仓库ADB如何使用数仓版一键诊断功能-前提条件?
82 0
|
4天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
74 11
|
10天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
17 0
|
10天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
39 0
|
1月前
|
分布式计算 大数据 Hadoop
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
从事数仓工作,在工作学习过程也看了很多数据仓库方面的数据,此处整理了数仓中经典的,或者值得阅读的书籍,推荐给大家一下,希望能帮助到大家。建议收藏起来,后续有新的书籍清单会更新到这里。
245 2
数据仓库(13)大数据数仓经典最值得阅读书籍推荐
|
1月前
|
SQL 数据采集 存储
数据仓库(12)数据治理之数仓数据管理实践心得
这边文章聊聊自己对数据治理开发实践的一些思路,就是聊聊怎么开始去做数据治理这件事情。说起数据治理,有时候虽然看了很多文章,看了很多的介绍,了解数据治理的理论,但是实际上需要我们去搞的时候,就会踩很多的坑。这里记一下自己做数据治理的一些思路,做做笔记,也分享给需要的同学。 当然,想要做数据治理,想要学习了解,一下数据治理的范围,理论等,最好可以看看别人怎么做的,了解数据治理可以参考:[数据仓库(11)什么是大数据治理,数据治理的范围是哪些](https://zhuanlan.zhihu.com/p/467433967)。
305 0
|
1月前
|
存储 大数据 数据管理
数据仓库(09)数仓缓慢变化维度数据的处理
数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快速的事实表相比,维度变化相对缓慢。阴齿这个就叫做缓慢变化维。
218 2
数据仓库(09)数仓缓慢变化维度数据的处理
|
3月前
|
网络安全 数据安全/隐私保护
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
使用rsync+nxlog同步+采集应用日志并接入到GrayLog5.1【优化篇】
34 0