本项目需要读者模仿前端日志数据落盘过程自行生成模拟日志数据,这部分代码读者可通过“尚硅谷教育”公众号的项目资料获取。通过后续内容中日志生成的操作,可以在虚拟机的/opt/module/data_mocker/log目录下生成每天的日志数据。
1.文件准备
(1)将application.yml、edu2021-mock-2022-04-22.jar、path.json、logback.xml上传到hadoop102的/opt/module/data_mocker目录下。
(2)修改application.yml配置文件,通过修改配置文件中的mock.date参数,可以得到不同日期的日志数据,其余参数也可以根据注释,按照个人需求进行修改。
(3)修改path.json配置文件,通过修改该配置文件,可以灵活配置用户点击路径。
(4)修改logback.xml文件,可以配置日志生成路径,修改内容如下。
2.数据生成命令测试
(1)修改配置文件application.yml中的参数,生成第一天(此项目中将2022年2月21日视为第一天)的用户行为日志和业务数据,参数修改如下。每次生成第一天的数据,都需要将mock.clear.busi和mock.clear.user参数修改为1,表示将业务数据库中的事实数据和用户数据全部重置。
(2)在/opt/module/data_mocker路径下执行日志生成命令,模拟生成2022年2月21日的数据。
(3)在/opt/module/data_mocker/log路径下查看生成的用户行为日志。
注意: 文件的后缀日期是执行命令的日期,生成的用户行为日志和业务数据中的日期由配置文件中的mock.date参数控制。
使用Navicat查看生成的业务数据,如图4-2所示,与图4-1对比可以看出,用户数据已经被重置,新生成了50条创建日期为2022-02-21的用户数据。
图4-2 模拟生成首日的业务数据
(4)在配置文件application.yml中修改如下配置。其中,mock.clear.busi和mock.clear.user参数用于决定此次数据模拟是否清空原有业务数据库中的数据。在第二次模拟数据时,这两个参数修改为0,表示不清空。
(5)再次执行命令,生成2022-02-22的数据。
(6)在/opt/module/data_mocker/log路径下查看生成的用户行为日志。
可以看到,用户行为数据文件的大小由5284098字节变成了10487541字节,说明有新数据生成。
使用Navicat工具查看生成的业务数据,如图4-3所示,可以看到用户数据从原来的50条增加到了现在的100条,说明成功生成了新数据。
图4-3 模拟生成第二日的业务数据
3.数据生成脚本
将以上的数据生成过程封装成脚本,方便用户调用执行。
脚本思路如下:
·当生成第一天(2022年2月21日)的数据时,通过sed命令,修改application.yml文件中的mock.clear.busi和mock.clear.user参数为1。
·当生成其他日期的数据时,通过sed命令,修改application.yml文件中的mock.clear.busi和mock.clear.user参数为0。
(1)在/home/atguigu/bin目录下创建脚本mock.sh。
(2)在脚本中编写如下内容。
注意:
·DATA_HOME变量为jar包及配置文件所在路径。
·/dev/null代表Linux的空设备文件,所有往这个文件里写入的内容都会丢失,俗称“黑洞”。
标准输入0:从键盘获得输入/proc/self/fd/0。
标准输出1:输出到屏幕(即控制台)/proc/self/fd/1。
错误输出2:输出到屏幕(即控制台)/proc/self/fd/2。
(3)增加脚本执行权限。
(4)脚本使用说明:传入参数init,则生成2022-02-21以及前5天的数据;传入具体日期,如2022-02-22,则只生成该日期当天的数据。
测试脚本,传入参数init。
测试脚本,传入参数2022-02-22,生成2022年2月22日的数据。
(5)在/opt/module/data_mocker/log目录下查看生成的数据,判断脚本是否生效。