当前位置:网站首页>数仓4.0(一)
数仓4.0(一)
2022-08-03 07:49:00 【JiaXingNashishua】
目录
一:数据仓库概念
数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。
数据仓库的输入数据通常包括:业务数据、用户行为数据和爬虫数据等
- 业务数据:就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据。业务数据通常存储在MySQL、Oracle等数据库中。
- 用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。
- 爬虫数据:通常事通过技术手段获取其他公司网站的数据。(谨慎操作)
二:项目需求及架构设计
2.1 项目需求分析
2.2 项目框架
2.2.1 技术选型
2.2.2 系统数据流程设计
2.2.3 框架版本选型
我选择使用的是Apache版本的框架,虽然Apache运维麻烦,组件间兼容性需要自己调研。(但是是开源的)----一般适合大厂使用
以下是框架的具体版本型号
注意:框架选型尽量不要选择最新的框架,选择最新框架半年前左右的稳定版。
2.2.4 服务器选型
2.2.5 集群规模
2.2.6 集群资源规划设计
在企业中通常会搭建一套生产集群和一套测试集群。生产集群运行生产任务,测试集群用于上线前代码编写和测试。
一)生产集群
(1)消耗内存的分开
(2)数据传输数据比较紧密的放在一起(Kafka 、Zookeeper)
(3)客户端尽量放在一到两台服务器上,方便外部访问
(4)有依赖关系的尽量放到同一台服务器(例如:Hive和Azkaban Executor)
2)测试集群服务器规划
三:数据生成模块
3.1 目标数据
我们要收集和分析的数据主要包括页面数据、事件数据、曝光数据、启动数据和错误数据。
3.1.1 页面
页面数据主要记录一个页面的用户访问情况,包括访问时间、停留时间、页面路径等信息。
3.1.2 事件
事件数据主要记录应用内一个具体操作行为,包括操作类型、操作对象、操作对象描述等信息。
3.1.3 曝光
曝光数据主要记录页面所曝光的内容,包括曝光对象,曝光类型等信息。
3.1.4 启动
启动数据记录应用的启动信息。
3.1.5 错误
错误数据记录应用使用
过程中的错误信息,包括错误编号(404)及错误信息。
3.2 数据埋点
3.2.1 主流埋点方式(了解)
目前主流的埋点方式,有代码埋点(前端/后端)、可视化埋点、全埋点三种。
3.2.2 埋点数据上报时机
方式一,在离开该页面时,上传在这个页面产生的所有数据(页面、事件、曝光、错误等)。优点,批处理,减少了服务器接收数据压力。缺点,不是特别及时。
方式二,每个事件、动作、错误等,产生后,立即发送。优点,响应及时。缺点,对服务器接收数据压力比较大。
注意:本项目采用方式一。
3.2.3 埋点数据日志结构
我们的日志结构大致可分为两类,一是普通页面埋点日志,二是启动日志。
普通页面日志结构如下,每条日志包含了,当前页面的页面信息,所有事件(动作)、所有曝光信息以及错误信息。除此之外,还包含了一系列公共信息,包括设备信息,地理位置,应用信息等,即下边的common字段。
(1)普通页面埋点日志格式
"common"字段+内容
"actions"字段+内容
"displays"字段+内容
"page"字段+内容
"err"字段+内容
"ts"字段+内容
(2)启动日志格式
启动日志结构相对简单,主要包含公共信息,启动信息和错误信息。
"common"字段+内容
"start"字段+内容
"err"字段+内容
"ts"字段+内容
3.3 模拟数据
将application.yml、gmall2020-mock-log-2021-01-22.jar、path.json、logback.xml上传到hadoop102的/opt/module/applog目录下
生成日志
(1)进入到/opt/module/applog路径,执行以下命令
[[email protected] applog]$ java -jar gmall2020-mock-log-2021-01-22.jar
(2)在/opt/module/applog/log目录下查看生成日志
[[email protected] log]$ ll
将生成日志写成脚本,然后放在bin目录下,然后分发给其他集群,这样就可以随时生成日志了。
边栏推荐
猜你喜欢
随机推荐
volta管理node版本
【云原生--Kubernetes】Pod容器与镜像拉取策略
ArcEngine (5) use the ICommand interface to achieve zoom in and zoom out
“唯一索引允许为空“ 的说法是不严谨的
用云机器/虚拟机架设方舟游戏?
Karatsuba大数乘法的Verilog实现
redis AOF持久化个人理解
如何像用自来水一样使用数据库?|腾讯云数据库TDSQL-C
pyspark @udf loop using variable problem
MySQL or使索引失效
图解Kernel Device Tree(设备树)的使用
DeFi明斯基时刻:压力测试与启示
Pyspark - an empty string is replaced by None
frp: open source intranet penetration tool
sqlite date field plus one day
第十二天&接口和协议
timestamp
Taro框架-微信小程序-调用微信支付
《剑指Offer》刷题之打印从1到最大的n位数
xshell开启ssh端口转发,通过公网机器访问内网机器