数据仓库概念
数据仓库(Data Warehouse )是为企业所有决策制定过程,提供所有系统数据的战略集合
通过对数据仓库中数据的分析,可以帮助企业,改进业务、控制成本、提高产品质量等。
数据仓库,并不是数据的最终目的地,而是为数据最终的目的地做好准备。
这些准备包括对数据的:
项目需求及架构设计
项目需求分析
项目需求 :
- 用户行为数据采集平台搭建
- 业务数据采集平台搭建
- 数据仓库维度建模
- 分析,设备、会员、商品、地区、活动等电商核心主题,统计的报表指标近100个
- 采用即席查询工具,随时进行指标分析
- 对集群性能进行监控,发生异常需要报警
- 元数据管理
- 质量监控
项目框架
技术选型
数据采集传输:Flume,DataX , Maxwell , Kafka , Sqoop
数据存储:MySql ,HDFS,HBase,Redis , MongoDB
数据计算:Hive,Spark,Flink , Tez , Strom
数据查询:Presto,Kylin,Impala , DataX
数据可视化:Superset , QuickBI , DataV
任务调度:DolphinScheduler、Azkaban、Oozie
集群监控:Zabbix
元数据管理:Atlas
系统数据流程设计
业务交互数据:业务流程中产生的登录、订单、用户、商品、支付等相关的数据,通常存储在 DB 中,如 : Mysql、Oracle
埋点用户行为数据 : 用户在使用产品过程中 ,与客户端产品交互程中产生的数据 , 如 : 页面浏览、点击、停留、评论、点赞、收藏
框架版本选型
Apache:运维麻烦,组件间兼容性需要自己调研。(一般大厂使用,技术实力雄厚,有专业的运维人员)(建议使用)
CDH::国内使用最多的版本,但CM不开源,今年开始要收费,一个节点1万美金
HDP:开源,可以进行二次开发,但是没有CDH稳定,国内使用较少
产品 | 版本 |
---|
Java | 1.8 | Hadoop | 3.1.3 | Hive | 3.1.2 | Flume | 1.9.0 | Zookeeper | 3.5.7 | Kafka | 2.4.1 | DataX | 3.0 | Maxwell | 1.29.2 |
框架选型尽量不要选择最新的框架 , 选择最新框架半年前左右的稳定版
服务器选型
物理机:
- 以128G内存,20核物理CPU,40线程,8THDD和2TSSD硬盘,戴尔品牌单台报价4W出头。一般物理机寿命5年左右
- 需要有专业的运维人员,平均一个月1万。电费也是不少的开销
云主机:
- 以阿里云为例,差不多相同配置,每年5W,主要磁盘贵
- 很多运维工作都由阿里云完成,运维相对较轻松
企业选择 :
- 金融有钱公司和阿里没有直接冲突的公司选择阿里云
- 中小公司、为了融资上市,选择阿里云,拉倒融资后买物理机
- 有长期打算,资金比较足,选择物理机
集群资源规划设计
(假设:每台服务器 8T 磁盘,128G 内存)
- 每天日活跃用户 100 万,每人一天平均 100 条:100万 * 100条 = 1亿条
- 每条日志 1K 左右,每天 1 亿条:100000000 / 1024 / 1024 = 约100G
- 半年内不扩容服务器来算:100G * 180天 = 约18T
- 保存 3 副本:18T * 3 = 54T
- 预留20% 30%Buf = 54T / 0.7 = 77T
约 8T * 10 台服务器
集群服务器规划 :
服务名称 | 子服务 | 服务器 cpucode101 | 服务器 cpucode102 | 服务器 cpucode103 |
---|
HDFS | NameNode | √ | | | | DataNode | √ | √ | √ | | SecondaryNameNode | | | √ | | | | | | Yarn | NodeManager | √ | √ | √ | | Resourcemanager | √ | | | | | | | | Zookeeper | Zookeeper Server | √ | √ | √ | Flume(采集日志) | Flume | √ | √ | | Kafka | Kafka | √ | √ | √ | Flume(消费Kafka) | Flume | | | √ | Hive | Hive | √ | | | MySQL | MySQL | √ | | | DataX | DataX | √ | | | Maxwell | Maxwell | √ | | | | | | | | Presto | Coordinator | √ | | | | Worker | √ | √ | √ | | | | | | DolphinScheduler | MasterServer | √ | | | | WorkerServer | √ | √ | √ | | | | | | Druid | Druid | √ | √ | √ | Kylin | | √ | | | | | | | | Hbase | HMaster | √ | | | | HRegionServer | √ | √ | √ | | | | | | Superset | | √ | | | Atlas | | √ | | | Solr | Jar | √ | √ | √ |
用户行为日志
用户行为日志概述
用户行为日志的内容 : 用户的各项行为信息以及行为所处的环境信息
收集信息的目的 : 优化产品和为各项分析统计指标提供数据支撑
收集这些信息的手段 : 埋点
埋点方式 :
代码埋点 : 通过调用埋点SDK函数,在需要埋点的业务逻辑功能位置调用接口,上报埋点数据。如 : 我们对页面中的某个按钮埋点后,当这个按钮被点击时,可以在这个按钮对应的 OnClick 函数里面调用SDK提供的数据发送接口,来发送数据
可视化埋点 : 只需要研发人员集成采集 SDK,不需要写埋点代码,业务人员就可以通过访问分析平台的“圈选”功能,来“圈”出需要对用户行为进行捕捉的控件,并对该事件进行命名。圈选完毕后,这些配置会同步到各个用户的终端上,由采集 SDK 按照圈选的配置自动进行用户行为数据的采集和发送
全埋点 : 通过在产品中嵌入SDK,前端自动采集页面上的全部用户行为事件,上报埋点数据,相当于做了一个统一的埋点。然后再通过界面配置哪些数据需要在系统里面进行分析
用户行为日志内容
收集和分析的用户行为信息 :
页面浏览记录
页面浏览记录 : 记录访客对页面的浏览行为
浏览行为的环境信息 :
- 用户信息
- 时间信息
- 地理位置信息
- 设备信息
- 应用信息
- 渠道信息
- 页面信息
用户信息 | 包括用户ID、设备ID |
---|
时间信息 | 用户跳入页面的时间 | 地理位置信息 | 用户浏览页面时所处的地理位置 | 设备信息 | 包括设备品牌、设备型号、设备系统 | 应用信息 | 指用户访问的应用信息,例如应用版本 | 渠道信息 | 指应用的下载渠道 | 页面信息 | 用户浏览的页面相关信息,包括页面ID,页面对象 |
动作记录
动作记录 : 记录的是用户的业务操作行为
业务操作行为的环境信息 :
- 用户信息
- 时间信息
- 地理位置信息
- 设备信息
- 应用信息
- 渠道信息
- 动作目标对象信息
用户信息 | 包括用户ID、设备ID |
---|
时间信息 | 动作时间 | 地理位置信息 | 动作发生时所处的地理位置 | 设备信息 | 设备品牌、设备型号、设备系统 | 应用信息 | 用户访问的应用信息,例如应用版本 | 渠道信息 | 应用的下载渠道 | 动作目标信息 | 动作目标对象相关信息,包括对象类型,对象ID |
曝光记录
启动记录
错误记录
错误记录 : 记录用户在使用应用过程中的报错行为
报错行为的环境信息 :
- 用户信息
- 时间信息
- 地理位置信息
- 设备信息
- 应用信息
- 渠道信息
- 可能与报错相关的页面信息
- 动作信息
- 曝光信息
- 动作信息
用户行为日志格式
日志结构分为两类 :
页面日志
启动日志
模拟生成用户行为日志
数据采集模块
|