欢迎访问笔者个人技术博客: http://rukihuang.xyz/

学习视频来源于尚硅谷,视频链接:尚硅谷大数据项目数据仓库,电商数仓V1.2新版
,Respect!

1 数据仓库的概念

  • 数据仓库(Data Warehouse),是为企业所有决策制定过程,提供所有系统数据支持的战略集合。
  • 通过对数据仓库中数据的分析,可以帮助企业,改进业务流程、控制成本、题号提高产品质量等。
  • 数据仓科,并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准备包括对数据的:清洗、转义、分类、重组、合并、拆分、统计等等。

在这里插入图片描述

2 项目需求分析

  1. 用户行为数据采集平台搭建
  2. 业务数据采集平台搭建
  3. 数据仓库维度建模
  4. 分析:用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近100个
  5. 采用即席查询工具,随时进行指标分析
  6. 对集群新能及逆行监控,发生异常需要报警
  7. 元数据管理
  8. 质量监控

3 项目框架

3.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

3.2 系统数据流程设计

在这里插入图片描述

3.3 框架版本选型

产品 版本
Hadoop 2.7.2
Flume 1.7.0
Kafka 0.11.0.2
Hive 2.3
Sqoop 1.4.6
MySql 5.6.24
Azkaban 2.5.0
Java 1.8
Zookeeper 3.4.10
Presto 0.189

3.4 服务器选型

  • 本地搭建3台Centos6虚拟机(4g内存 40g硬盘)

3.5 集群资源规划设计

3.5.1 集群规模计算

  1. 每天日活用户100万,每人一天平均生产100条:100万*100条=1亿条
  2. 每条日志1kb左右,每天1亿条:100000000/1024/1024=100G
  3. 半年内不扩容:100G*180=18T
  4. 保存3个副本:18T*3=54T
  5. 预留20%~30%=54T/0.7=77T
  6. 共计8T*10台服务器(128G内存,8T硬盘)

3.5.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 Azkaban WebServer
AzkabanExecutorServer
Druid Druid
Kylin
HBase HMaster
HRegionServer
Superset
Atlas
Solr Jar
Griffin
服务数总计 19 9 9
  • 注意:HDFS的NameNodeSecondaryNameNode和Yarn的ResourceManager配置在不同的服务器中,因为都很耗内存

4 数据生成

4.1 埋点数据基本格式

  • 公共字段:基本所有手机都包含的字段
  • 业务字段:埋点上报的字段,有具体的业务类型
1587692644625 | {
	"cm": { //公共字段
		"ln": "-66.7", //double lng经度
		"sv": "V2.0.1", //String sdkVersion
		"os": "8.1.7",
		"g": "50F3N8XP@gmail.com", //String gmail
		"mid": "998", //String 设备唯一id
		"nw": "3G", //String 网络模式
		"l": "en", //String language 系统语言
		"vc": "18", //String versionCode 程序版本号
		"hw": "750*1134", //String height width 屏幕宽高
		"ar": "MX", //String area 区域
		"uid": "998", //String 用户标识
		"t": "1587650831270", //String 客户端日志产生时的事件
		"la": "5.2", //double lat纬度
		"md": "HTC-16", //String model 手机型号
		"vn": "1.3.1", //String versionName 程序版本名
		"ba": "HTC", //String brand 手机品牌
		"sr": "N" //String source 渠道号,应用从哪个渠道来的
	},
	"ap": "app", //项目数据来源 app pc
	"et": [{ //事件
		"ett": "1587626436201", //客户端事件产生时间
		"en": "loading", //事件名称
		"kv": { //事件结果,key-value
			"extend2": "",
			"loading_time": "0",
			"action": "3",
			"extend1": "",
			"type": "1",
			"type1": "201",
			"loading_way": "2"
		}
	}, {
		"ett": "1587604641583",
		"en": "ad",
		"kv": {
			"activityId": "1",
			"displayMills": "38392",
			"entry": "1",
			"action": "1",
			"contentType": "0"
		}
	}, {
		"ett": "1587672451544",
		"en": "active_background",
		"kv": {
			"active_source": "1"
		}
	}, {
		"ett": "1587631751514",
		"en": "favorites",
		"kv": {
			"course_id": 8,
			"id": 0,
			"add_time": "1587610751419",
			"userid": 1
		}
	}, {
		"ett": "1587633225209",
		"en": "praise",
		"kv": {
			"target_id": 7,
			"id": 9,
			"type": 2,
			"add_time": "1587692182176",
			"userid": 2
		}
	}]
}

4.2 事件日志数据

4.2.1 商品列表页 loading

标签 含义
action 动作:开始加载=1,加载成功=2,加载失败=3
loading_time 加载时长:计算下拉开始到接口返回数据的时间,(开始加载报 0,加载成功或加载失败才上报时间)
loading_way 加载类型:1-读取缓存,2-从接口拉新数据(加载成功才上报加载类型)
extend1 扩展字段 Extend1
extend2 扩展字段 Extend2
type 加载类型:自动加载=1,用户下拽加载=2,底部加载=3(底部条触发点击底部提示条/点击返回顶部加载)
type1 加载失败码:把加载失败状态码报回来(报空为加载成功,没有失败)

4.2.2 商品点击 display

标签 含义
action 动作:曝光商品=1,点击商品=2
goodsid 商品 ID(服务端下发的 ID)
place 顺序(第几条商品,第一条为 0,第二条为 1,如此类推)
extend1 曝光类型:1 - 首次曝光 2-重复曝光
category 分类 ID(服务端定义的分类 ID)

4.2.3 商品详情页 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)

4.2.4 广告 ad

标签 含义
entry 入口:商品列表页=1 应用首页=2 商品详情页=3
action 动作: 广告展示=1 广告点击=2
contentType Type: 1 商品 2 营销活动
displayMills 展示时长 毫秒数
itemId 商品 id
activityId 营销活动 id

4.2.5 消息通知 notification

标签 含义
action 动作:通知产生=1,通知弹出=2,通知点击=3,常驻通知展示(不重复上报,一天之内只报一次)=4
type 通知 id:预警通知=1,天气预报(早=2,晚=3),常驻=4
ap_time 客户端弹出时间
content 备用字段

4.2.6 用户后台活跃 active_background

标签 含义
active_source 1=upgrade,2=download(下载),3=plugin_upgrade

4.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

4.2.8 收藏 favorates

序号 字段名称 字段描述 字段类型 长度 允许空 缺省值
1 id 主键 int 10,0
2 course_id 商品 id int 10,0 0
3 userid 用户 ID int 10,0 0
4 add_time 创建时间 string

4.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

4.2.10 错误日志

标签 含义
errorBrief 错误摘要
errorDetail 错误详情

4.3 启动日志数据

标签 含义
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
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐