一、数仓分层介绍

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的更多相关文章

  1. Linux下nginx反向代理服务器安装与配置实操

    1.我们只要实现访问nginx服务器能跳转到不同的服务器即可,我本地测试是这样的, 在nginx服务器里面搭建了2个tomcat,2个tomcat端口分别是8080和8081,当我输入我nginx服务 ...

  2. 数仓建设中最常用模型--Kimball维度建模详解

    数仓建模首推书籍<数据仓库工具箱:维度建模权威指南>,本篇文章参考此书而作.文章首发公众号:五分钟学大数据,公众号中发送"维度建模"即可获取此书籍第三版电子书 先来介绍 ...

  3. 数仓建模—ID Mapping

    早晨起床的时候,发现自己尿分叉,我没有多想,简单洗洗就匆忙出门.路过早餐店,我看到师傅熟练的拉扯一小块面团,拉至细长条,然后放入油锅中,不一会功夫,一根屎黄色的油条便出锅了,卖相不错.我在想,小到炸屎 ...

  4. 数仓建模—OneID

    今天是我在上海租房的小区被封的第三天,由于我的大意,没有屯吃的,外卖今天完全点不到了,中午的时候我找到了一包快过期的肉松饼,才补充了1000焦耳的能量.但是中午去做核酸的时候,我感觉走路有点不稳,我看 ...

  5. 数仓建模—建模工具PdMan(CHINER)介绍

    数据仓库系列文章(持续更新) 数仓架构发展史 数仓建模方法论 数仓建模分层理论 数仓建模-宽表的设计 数仓建模-指标体系 数据仓库之拉链表 数仓-数据集成 数仓-数据集市 数仓-商业智能系统 数仓-埋 ...

  6. Nginx 七层反向代理

    目录 1.代理 2.正向代理 3.反向代理 4.Nginx 反向代理 5.Nginx 反向代理相关指令介绍 ①.listen ②.server_name ③.location ④.proxy_pass ...

  7. 实时数仓(二):DWD层-数据处理

    目录 实时数仓(二):DWD层-数据处理 1.数据源 2.用户行为日志 2.1开发环境搭建 1)包结构 2)pom.xml 3)MykafkaUtil.java 4)log4j.properties ...

  8. HBase实战 | 知乎实时数仓架构演进

    https://mp.weixin.qq.com/s/hx-q13QteNvtXRpNsE5Y0A 作者 | 知乎数据工程团队编辑 | VincentAI 前线导读:“数据智能” (Data Inte ...

  9. (转)用Flink取代Spark Streaming!知乎实时数仓架构演进

    转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...

  10. 基于 Kafka 的实时数仓在搜索的实践应用

    一.概述 Apache Kafka 发展至今,已经是一个很成熟的消息队列组件了,也是大数据生态圈中不可或缺的一员.Apache Kafka 社区非常的活跃,通过社区成员不断的贡献代码和迭代项目,使得 ...

随机推荐

  1. MySQL读写分离之——ProxySQL

    文章转载自:https://blog.csdn.net/u012280685/article/details/113520692?spm=1001.2014.3001.5501 实现一个简单的读写分离 ...

  2. MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑

    总结/朱季谦 B+树是一种在非叶子节点存放排序好的索引而在叶子节点存放数据的数据结构,值得注意的是,在叶子节点中,存储的并非只是一行表数据,而是以页为单位存储,一个页可以包含多行表记录.非叶子节点存放 ...

  3. 从nuxt开始的SEO之路

    故事从一个"美好"的早上开始...... 大清早的来到公司,打开电脑,emm, 还是熟悉的味道,鱼儿被我摸熟了的味道......就在开始准备一天的摸鱼之旅的时候,一种不详的预感涌上 ...

  4. a += 20 和 a = a+20前者不报错,后者报错的原因

    我们在使用a += 20 和 a = a+20两种不同方式的赋值运算是发现尽然前者不报错,后者报错 代码示例: shot s = 5; s += 5; s = s+5; 很明显我们可以看出s = s+ ...

  5. k3s部署全过程

    # 安装k3s博客 ## 准备工作 1.准备俩台可以相互访问的服务器 2.需要先安装dockers 3.以下教程将使用VsCode+ssh插件来进行插件图 ssh连接到俩台服务器 点击打开ssh操作界 ...

  6. 支付宝沙箱服务 (结合springboot实现,这里对接的是easy版本,工具用的是IDEA,WebStrom)

    一:打开支付宝开发平台,登录,然后点击控制台 https://open.alipay.com/ 二:滚动到底部,选着沙箱服务 三:获取到对接要用的appId和公钥私钥 四:打开IDEA导入所需的xml ...

  7. GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署

    预期目标 源代码管理 借助GitLab实现源代码托管,私有化部署版本,创建项目,创建用户组,分配权限,项目的签入/牵出等. 自动化部署 源代码产生变更时(如签入),自动化编译并发布到指定服务器中部署, ...

  8. AT&T汇编语法与x86语法基本区别

    AT&T汇编和8086汇编语言虽然两者很相似,但是还是不能根据8086的语法规则来读AT&T汇编的吧,所以还是要看看AT&T汇编的语法规则,因为在读内核代码时,跟硬件打交道的部 ...

  9. 齐博x1到底是怎么的存在?

    齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. 系统已经对接好QQ.微信登录,同 ...

  10. python查找相似图片或重复图片

    1.查找重复图片 利用文件的MD5值可查找完全一样的重复图片 import os,time,hashlib def getmd5(file): if not os.path.isfile(file): ...