上一篇:离线数仓08—— 配置Hive on Spark
下一篇:离线数仓10—— 数仓开发之ODS层
6.3 模拟数据准备
通常企业在开始搭建数仓时,业务系统中会存在历史数据,一般是业务数据库存在历史数据,而用户行为日志无历史数据。假定数仓上线的日期为2020-06-14,为模拟真实场景,需准备以下数据。
注:在执行以下操作之前,先将HDFS上/origin_data路径下之前的数据删除。
1)用户行为日志
用户行为日志,一般是没有历史数据的,故日志只需要准备2020-06-14一天的数据。具体操作如下:
(1)启动日志采集通道,包括Flume、Kafak等
(2)修改两个日志服务器(hadoop102、hadoop103)中的
/opt/module/applog/application.yml配置文件,将mock.date参数改为2020-06-14。
(3)执行日志生成脚本lg.sh。
(4)观察HDFS是否出现相应文件。
2)业务数据
业务数据一般存在历史数据,此处需准备2020-06-10至2020-06-14的数据。具体操作如下。
(1)生成模拟数据
①修改hadoop102节点上的/opt/module/db_log/application.properties文件,将mock.date、mock.clear,mock.clear.user三个参数调整为如图所示的值。
②执行模拟生成业务数据的命令,生成第一天2020-06-10的历史数据。
[atguigu@hadoop102 db_log]$ java -jar gmall2020-mock-db-2021-01-22.jar
③修改/opt/module/db_log/application.properties文件,将mock.date、mock.clear,mock.clear.user三个参数调整为如图所示的值。
④执行模拟生成业务数据的命令,生成第二天2020-06-11的历史数据。
[atguigu@hadoop102 db_log]$ java -jar gmall2020-mock-db-2021-10-10.jar
之后只修改/opt/module/db_log/application.properties文件中的mock.date参数,依次改为2020-06-12,2020-06-13,2020-06-14,并分别生成对应日期的数据。
(2)全量表同步
①执行全量表同步脚本
[atguigu@hadoop102 bin]$ mysql_to_hdfs_full.sh all 2020-06-14
②观察HDFS上是否出现全量表数据
(3)增量表首日全量同步
①清除Maxwell断点记录
由于Maxwell支持断点续传,而上述重新生成业务数据的过程,会产生大量的binlog操作日志,这些日志我们并不需要。故此处需清除Maxwell的断点记录,另其从binlog最新的位置开始采集。
关闭Maxwell。
[atguigu@hadoop102 bin]$ mxw.sh stop
清空Maxwell数据库,相当于初始化Maxwell。
mysql>
drop table maxwell.bootstrap;
drop table maxwell.columns;
drop table maxwell.databases;
drop table maxwell.heartbeats;
drop table maxwell.positions;
drop table maxwell.schemas;
drop table maxwell.tables;
②修改Maxwell配置文件中的mock_date参数
[atguigu@hadoop102 maxwell]$ vim /opt/module/maxwell/config.properties
mock_date=2020-06-14
③启动增量表数据通道,包括Maxwell、Kafka、Flume
④执行增量表首日全量同步脚本
[atguigu@hadoop102 bin]$ mysql_to_kafka_inc_init.sh all
观察HDFS上是否出现全量表数据
[atguigu@hadoop102 bin]$ mysql_to_kafka_inc_init.sh all
观察HDFS上是否出现全量表数据