【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel
一、数仓分层介绍
1、实时计算与实时数仓
实时计算实时性高,但无中间结果,导致复用性差
实时数仓基于数据仓库,对数据处理规划、分层,目的是提高数据的复用性
2、电商数仓的分层
ODS:原始日志数据和业务数据
DWD:以数据对象为单位进行分流,如订单、页面访问等
DIM:维度数据
DWM:数据对象进一步加工,形成宽表&明细数据【明细宽表】
DWS:根据主题对数据聚合,形成主题宽表【主题宽表】
ADS:将CLickHouse中的数据根据需求进行筛选聚合
二、实时需求概览
1、离线计算与实时计算
离线计算:根据确定范围的数据进行一次性计算【如根据前一日的数据生成报表/年度账单】
实时计算:序列化方式输入,所查当下给出结果,对当日数据的实时监控,需求简单、指标少,但注重实时性
2、实时需求种类
日常统计报表
实时数据大屏监控【双十一大促】
数据预警或提示【非法欺诈类操作,或检测用户行为从而进行跟进】
实时推荐【根据自身属性/用户行为,进行可能喜欢的内容推荐】
三、统计架构分析
1、离线架构
业务数据-MySQL-sqoop-hdfs-hive-MySQL-可视化
前端埋点日志数据-logfile-flume-kafka-flume-hdfs-MySQL-可视化
2、实时架构
业务数据-MySQL-Canal/Maxwell/FlinkCDC导入变更-kafka-flink-
前端埋点数据-kafka-flink
根据不同需求商业智能(Business Intelligence)/数据可视化调用,存入不同的库中,并将维度表和状态存入HBASE、redis中
埋点用户行为数据:用户在使用产品过程中,与客户端产品交互过程中产生的数据,比如页面浏览、点击、停留、评论、点赞、收藏等
业务交互数据:业务流程中产生的登录、订单、用户、商品、支付等相关的数据,通常存储在DB中,包括MySQL、Oracle等。
四、日志数据采集
1、日志生成器
使用生成数据的jar包,并将日志发送至指定的端口
需要学习如何从指定端口接受数据并进行处理(which software)
配置发送端口及生成数据的日期
2、日志采集模块测试
(1)spring boot
无需配置xml,使用默认配置
特别配置只需要修改application.properties(application.yml)
(2)搭建采集数据的模块-gmall-logger
安装lombok插件
创建父工程gmall2021,工程中管理多个模块
新建日志采集模块,并切换脚手架地址为https://start.aliyun.com
选择开发工具、消息的依赖
编写LoggerController:@RestController = @Controller+@ResponseBody、@RequestMapping("test2")、@RequestParam("name") String name
@RestController //表示返回普通对象而不是页面
调用路径返回数据打印到页面
(3)spring boot整合kafka
修改工程端口、kafka的地址
LoggerController添加注解@Slf4j和方法getLogger,实现日志落盘&发送对应主题到kafka【两个方法】
Resources 中添加 logback.xml 配置文件,设置某个包的日志单独打印
application.yml 配置中设置日志发送的方式http和地址,以及业务的日期
3、日志采集-打包单机部署
修改logback配置的打印目录为自身路径
打包、上传、启动消费者测试
4、打包集群部署,Nginx反向代理
同步日志采集的jar包:xsync gmall-flink
启动Nginx
运行消费者、运行采集数据的jar、运行生成数据的jar
五、业务数据库数据采集
1、FlinkCDC入门
2、MySQL准备
修改/etc/my.cnf 文件,设置binlog格式为row,指定要同步的数据库为所需的数据库【使用FlinkCDC同步MySQL的数据】
重启MySQL:sudo systemctl restart mysqld
修改配置中的数据库连接信息spring.datasource.url,运行jar包生成数据
3、环境搭建
创建包结构
4、代码实现
将流数据推送到topic中【生产者】
消费MySQL变化数据并将其写入kafka【flinkCDC】
六、Nginx
1、正向代理与反向代理
多对一、一对多
2、应用
静态部署(web网站)、负载均衡、静态代理(资源)、动静分离
3、安装启动
4、负载均衡配置
七、Maxwell
实时读取MySQL 二进制日志 Binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka
1、工作原理
(1)MySQL 主从复制过程
(2)Maxwell 的工作原理
把自己伪装成 slave,假装从 master 复制数据
(3)MySQL 的 binlog(二进制日志)
使用场景:数据恢复、主从数据保持一致
开启:Linux和Windows的文件不同my.cnf my.ini
分类:STATEMENT(语句级,可能产生数据不一致的情况,如update tt set create_date=now()),MIXED(statement的升级版,特殊情况采用行级处理方式),ROW(行级,记录每行数据的变化)
Maxwell适合选用行级日志
2、安装、初始化元数据库
3、使用 Maxwell 监控抓取 MySQL 数据
拷贝并修改配置(输出到指定topic)
编写启动脚本,并启动消费端
八、Canel搭建教程
1、入门
(1)概念
用 java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件
利用 Canal Client 来处理获得的相关数据
(2)应用场景
原始场景:阿里中间件的一部分
更新缓存到服务器
抓取变化表来制作拉链表
新增变化数据制作实时统计
(3)工作原理
主从复制原理:写到二进制日志(Binary log)
canle原理:把自己伪装成 Slave,假装从 Master 复制数据
(4)MySQL的binlog
2、架构以及安装
(1)架构
(2)单机版
修改配置,改为输出到kafka
实例配置修改
2、 canal 高可用
实现高可用,而不是负载均衡
配置 zookeeper
避免发送重复数据
3、Maxwell与Canal工具对比
Maxwell 没有 Canal 那种 server+client 模式,只有一个 server 把数据发送到消息队列或 redis。
Canal 只能抓取最新数据,对已存在的历史数据没有办法处理,Maxwell有一个bootstrap,可以导出完整的历史数据
Maxwell 不能直接支持 HA,但是它支持断点还原
Maxwell 只支持 json 格式,而 Canal可以自定义格式
Maxwell 比 Canal 更加轻量级
数据格式对比
【实时数仓】Day01-数据采集层:数仓分层、实时需求、架构分析、日志数据采集(采集到指定topic和落盘)、业务数据采集(MySQL-kafka)、Nginx反向代理、Maxwell、Canel的更多相关文章
- Linux下nginx反向代理服务器安装与配置实操
1.我们只要实现访问nginx服务器能跳转到不同的服务器即可,我本地测试是这样的, 在nginx服务器里面搭建了2个tomcat,2个tomcat端口分别是8080和8081,当我输入我nginx服务 ...
- 数仓建设中最常用模型--Kimball维度建模详解
数仓建模首推书籍<数据仓库工具箱:维度建模权威指南>,本篇文章参考此书而作.文章首发公众号:五分钟学大数据,公众号中发送"维度建模"即可获取此书籍第三版电子书 先来介绍 ...
- 数仓建模—ID Mapping
早晨起床的时候,发现自己尿分叉,我没有多想,简单洗洗就匆忙出门.路过早餐店,我看到师傅熟练的拉扯一小块面团,拉至细长条,然后放入油锅中,不一会功夫,一根屎黄色的油条便出锅了,卖相不错.我在想,小到炸屎 ...
- 数仓建模—OneID
今天是我在上海租房的小区被封的第三天,由于我的大意,没有屯吃的,外卖今天完全点不到了,中午的时候我找到了一包快过期的肉松饼,才补充了1000焦耳的能量.但是中午去做核酸的时候,我感觉走路有点不稳,我看 ...
- 数仓建模—建模工具PdMan(CHINER)介绍
数据仓库系列文章(持续更新) 数仓架构发展史 数仓建模方法论 数仓建模分层理论 数仓建模-宽表的设计 数仓建模-指标体系 数据仓库之拉链表 数仓-数据集成 数仓-数据集市 数仓-商业智能系统 数仓-埋 ...
- Nginx 七层反向代理
目录 1.代理 2.正向代理 3.反向代理 4.Nginx 反向代理 5.Nginx 反向代理相关指令介绍 ①.listen ②.server_name ③.location ④.proxy_pass ...
- 实时数仓(二):DWD层-数据处理
目录 实时数仓(二):DWD层-数据处理 1.数据源 2.用户行为日志 2.1开发环境搭建 1)包结构 2)pom.xml 3)MykafkaUtil.java 4)log4j.properties ...
- HBase实战 | 知乎实时数仓架构演进
https://mp.weixin.qq.com/s/hx-q13QteNvtXRpNsE5Y0A 作者 | 知乎数据工程团队编辑 | VincentAI 前线导读:“数据智能” (Data Inte ...
- (转)用Flink取代Spark Streaming!知乎实时数仓架构演进
转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...
- 基于 Kafka 的实时数仓在搜索的实践应用
一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...
随机推荐
- 1.云原生之Docker容器技术基础知识介绍
转载自:https://www.bilibili.com/read/cv15180540/?from=readlist
- Fluentd 简明教程
转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247491814&idx=1&sn=3b0f1a3477 ...
- Beats:如何使用Winlogbeat
- MongoDB 副本集故障情况描述
副本集有两种类型三种角色 两种类型: 主节点( Primary)类型:数据操作的主要连接点,可读写. 次要(辅助.从)节点( Secondaries)类型:数据冗余备份节点,可以读或选举. 三种角色: ...
- P5657 [CSP-S2019] 格雷码 (找规律)
观察几个数据,有一种思路:类似于二分,判断每一位应该填1还是0: 1 #include <bits/stdc++.h> 2 //#define loveGsy 3 using namesp ...
- ubuntu20.04 利用xrandr命令修改多显示器分辨率
问题描述 笔记本是ThinkPad X1 Extreme Gen3 4K屏,外接了一个27寸的1080P显示器.目标是让两个显示器的"显示效果"分辨率能一致,就如winwods和m ...
- HFS局域网分享文件的神器(附下载链接)
温馨提示,下载链接在页末 前言 假如说你需要传递个学习资料给好基友,我们有许多种方式可选:硬盘媒介.网络分享等. 要是论速度,还是得拿3.0或以上的U盘来拷贝,确实神速哈哈.但是其也有局限性,比如需要 ...
- element-ui select可搜索下拉框无法在IOS或Ipad调起小键盘输入法
参考:https://segmentfault.com/q/1010000021748033 原因:常规select是可以调起小键盘的.但是element-ui的select其实是input.并且这个 ...
- 17_Vue列表过滤_js模糊查询
列表过滤 需求分析 这里呢有张列表,假设这个列表有一百多条数据 当我在这个 搜索框当中 搜索 单个关键字的时候 (冬,周,伦),它能把带了这几个关键字的信息都给我罗列出来 === 跟数据库的 模糊查询 ...
- 如何kill一条TCP连接?
原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介 如果你的程序写得有毛病,打开了很多TCP连接,但一直没有关闭,即常见的连接泄露场景,你可能想要在排查问题的过程中, ...