【实时数仓】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 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...
随机推荐
- Java语言(基础一)
Java语言 Java的特性和优势 简单性(简单易学) 面向对象(一种思想 万物皆对象) 可移植性(一次编写到处运行 JVM) 高性能(及时编译) 分布式(网络分布式url) 动态性(反射机制) 多线 ...
- Docker 部署 Confluence(破解版)
一. 说明 1.1 素材 本文采用素材如下: Docker镜像 Github链接(https://github.com/cptactionhank) 破解工具 Gitee链接(https://gite ...
- python-数据描述与分析(1)
数据描述与分析 在进行数据分析之前,我们需要做的事情是对数据有初步的了解,这个了解就涉及对行业的了解和对数据本身的敏感程度,通俗来说就是对数据的分布有大概的理解,此时我们需要工具进行数据的描述,观测数 ...
- JavaScript根据参数获取url中参数名的值
//假设ulr如下var localhost="http://127.0.0.1?name=tom&sex=男&id=1";//正则方法封装function Get ...
- MatrixOne从入门到实践03——部署MatrixOne
MatrixOne从入门到实践--部署MatrixOne 前两章节我们简单介绍了MatrixOne和源码编译了MatrixOne.本章节将使用不同的部署方式,来部署MatrixOne的服务. 注意:不 ...
- 会话跟踪技术 - Cookie 和 Session 快速上手 + 登陆注册案例
目录 1. 会话跟踪技术概述 2. Cookie 2.1 Cookie的概念和工作流程 2.2 Cookie的基本使用 2.3 Cookie的原理分析 2.4 Cookie的使用细节 2.4.1 Co ...
- JavaFx 使用字体图标记录
原文:JavaFx 使用字体图标记录 - Stars-One的杂货小窝 之前其实也是研究过关于字体图标的使用,还整了个库Tornadofx学习笔记(4)--IconTextFx开源库,整合5000+个 ...
- NLP之基于Bi-LSTM和注意力机制的文本情感分类
Bi-LSTM(Attention) @ 目录 Bi-LSTM(Attention) 1.理论 1.1 文本分类和预测(翻译) 1.2 注意力模型 1.2.1 Attention模型 1.2.2 Bi ...
- 三、Python语法介绍
三.Python语言介绍 3.1.了解Python语言 Python 是1989 年荷兰人 Guido van Rossum (简称 Guido)在圣诞节期间为了打发时间,发明的一门面向对象的解释性编 ...
- C#实践炸飞机socket通信
一.前言 最近老师要求做课设,实现一个 "炸飞机" 游戏,我是负责UI界面实现和Socket通信实现的,在这里想总结一下我实现Socket的具体过程,对其中的产生的问题和实现的方法 ...