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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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
}


相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
5月前
|
存储 数据采集 JavaScript
深入理解数仓开发(一)数据技术篇之日志采集
深入理解数仓开发(一)数据技术篇之日志采集
|
1月前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
103 6
|
1月前
|
分布式计算 Java Hadoop
Hadoop-18 Flume HelloWorld 第一个Flume尝试!编写conf实现Source+Channel+Sink 控制台查看收集到的数据 流式收集
Hadoop-18 Flume HelloWorld 第一个Flume尝试!编写conf实现Source+Channel+Sink 控制台查看收集到的数据 流式收集
30 1
|
2月前
|
存储 消息中间件 网络协议
日志平台-ELK实操系列(一)
日志平台-ELK实操系列(一)
|
3月前
|
监控 Java Serverless
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
|
5月前
|
存储 监控 安全
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
作为基于 Apache Doris 打造的现代化数据仓库,SelectDB 不拘泥于传统数仓的限制,针对日志数据的特点引入了多项创新性技术,使用户可基于 SelectDB 构建开放、高性能、低成本、统一的日志存储分析平台, 截至目前已在近百家行业内知名企业中落地。
《SelectDB 新一代日志存储分析平台解决方案》白皮书重磅发布|立即下载
|
5月前
|
消息中间件 数据挖掘 Kafka
使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流
使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流
126 2
|
5月前
|
机器学习/深度学习 人工智能 DataWorks
人工智能平台PAI产品使用合集之在使用行调用时遇到一直卡在ps job的问题,并且无法在DataWorks上查看到相关日志,是什么导致的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
5月前
|
消息中间件 数据采集 关系型数据库
离线数仓(三)【业务日志采集平台搭建】(2)
离线数仓(三)【业务日志采集平台搭建】
|
4月前
|
消息中间件 NoSQL Kafka
基于Kafka的nginx日志收集分析与监控平台(3)
基于Kafka的nginx日志收集分析与监控平台(3)