数据仓库 — 01_项目需求分析与技术选型(数仓概念、项目需求及架构设计、数据生成模块格式要求)


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

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

1 数据仓库的概念

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

在这里插入图片描述

2 项目需求分析

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

3 项目框架

3.1 技术选型

需求可选技术框架
数据采集传输FlumeKafkaSqoopLogstashDataX
数据存储MySqlHDFSHBaseRedisMongoDB
数据计算HiveTezSparkFlinkStorm
数据查询PrestoDruidImpalaKylin
数据可视化EchartsSupersetQuickBIDataV
任务调度AzkabanOozie
集群监控Zabbix
元数据管理Atlas
数据质量监控Griffin

3.2 系统数据流程设计

在这里插入图片描述

3.3 框架版本选型

产品版本
Hadoop2.7.2
Flume1.7.0
Kafka0.11.0.2
Hive2.3
Sqoop1.4.6
MySql5.6.24
Azkaban2.5.0
Java1.8
Zookeeper3.4.10
Presto0.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 本地测试集群服务器规划

服务名称子服务hadoop102hadoop103hadoop104
HDFSNameNode
DataNode
SecondaryNameNode
YarnNodeManager
ResourceManager
ZookeeperZookeeper Server
Flume(日志采集)Flume
KafkaKafka
Flume(消费Kafka)Flume
HiveHive
MySqlMySql
SqoopSqoop
PrestoCoordinator
Worker
AzkabanAzkaban WebServer
AzkabanExecutorServer
DruidDruid
Kylin
HBaseHMaster
HRegionServer
Superset
Atlas
SolrJar
Griffin
服务数总计1999
  • 注意: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
contentTypeType: 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_source1=upgrade,2=download(下载),3=plugin_upgrade

4.2.7 评论 comment

序号字段名称字段描述字段类型长度允许空缺省值
1comment_id评论表int10,0
2userid用户 idint10,00
3p_comment_id父级评论 id(为 0 则是一级评论,不 为 0 则是回复)int10,0
4content评论内容string1000
5addtime创建时间string
6other_id评论的相关 idint10,0
7praise_count点赞数量int10,00
8reply_count回复数量int10,00

4.2.8 收藏 favorates

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

4.2.9 点赞 praise

序号字段名称字段描述字段类型长度允许空缺省值
1id主键 idint10,0
2userid用户 idint10,0
3target_id点赞的对象 idint10,0
4type点赞类型 1 问答点赞 2 问答评论点赞 3 文章点赞数 4 评论点赞int10,0
5add_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
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值