3. 用户行为数据生成和采集
3.1 数据生成模块
3.1.1 目标数据
页面
事件
曝光
启动
错误
3.1.2 数据埋点
代码埋点——前后端
可视化埋点
全埋点
3.2 模拟数据
3.2.1 模拟数据软件准备
将 application.yml、gmall2020-mock-log-2021-01-22.jar、path.json、logback.xml 上传到 hadoop102 的/opt/module/applog 目录下
创建 applog 路径
mkdir /opt/module/applog上传文件 application.yml 到/opt/module/applog 目录
3.2.2 配置文件
application.yml 文件
可以根据需求生成对应日期的用户行为日志。
vim application.yml修改如下内容
\# 外部配置打开
\# 外部配置打开
logging.config: "./logback.xml"
\#业务日期 注意:并不是Linux系统生成日志的日期,而是生成数据中的时间
mock.date: "2020-06-14"
\#模拟数据发送模式
\#mock.type: "http"
\#mock.type: "kafka"
mock.type: "log"
\#http模式下,发送的地址
mock.url: "http://hdp1/applog"
\#kafka模式下,发送的地址
mock:
kafka-server: "hdp1:9092,hdp2:9092,hdp3:9092"
kafka-topic: "ODS_BASE_LOG"
\#启动次数
mock.startup.count: 200
\#设备最大值
mock.max.mid: 500000
\#会员最大值
mock.max.uid: 100
\#商品最大值
mock.max.sku-id: 35
\#页面平均访问时间
mock.page.during-time-ms: 20000
\#错误概率 百分比
mock.error.rate: 3
\#每条日志发送延迟 ms
mock.log.sleep: 10
\#商品详情来源 用户查询,商品推广,智能推荐, 促销活动
mock.detail.source-type-rate: "40:25:15:20"
\#领取购物券概率
mock.if_get_coupon_rate: 75
\#购物券最大id
mock.max.coupon-id: 3
\#搜索关键词
mock.search.keyword: "图书,小米,iphone11,电视,口红,ps5,苹果手机,小米盒子"path.json,该文件用来配置访问路径
根据需求,可以灵活配置用户点击路径。
[
{"path":["home","good_list","good_detail","cart","trade","payment"],"rate":20 },
{"path":["home","search","good_list","good_detail","login","good_detail","cart","trade","payment"],"rate":40 },
{"path":["home","mine","orders_unpaid","trade","payment"],"rate":10 },
{"path":["home","mine","orders_unpaid","good_detail","good_spec","comment","trade","payment"],"rate":5 },
{"path":["home","mine","orders_unpaid","good_detail","good_spec","comment","home"],"rate":5 },
{"path":["home","good_detail"],"rate":10 },
{"path":["home" ],"rate":10 }
]logback 配置文件
可配置日志生成路径,修改内容如下
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="/opt/module/applog/log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!-- 将某一个包下日志单独打印日志 -->
<logger name="com.atgugu.gmall2020.mock.log.util.LogUtil"
level="INFO" additivity="false">
<appender-ref ref="rollingFile" />
<appender-ref ref="console" />
</logger>
<root level="error" >
<appender-ref ref="console" />
</root>
</configuration>生成日志
(1)进入到/opt/module/applog 路径,执行以下命令
java -jar gmall2020-mock-log-2021-01-22.jar(2)在/opt/module/applog/log 目录下查看生成日志
ll3.2.3 集群日志生成脚本
在 hadoop102 的/home/duan 目录下创建 bin 目录,这样脚本可以在服务器的任何目录执行。
(1) 在/home/atguigu/bin 目录下创建脚本 lg.sh
cd
cd bin
vim lg.sh(2) 在脚本中编写如下内容
#!/bin/bash
for i in hadoop102 hadoop103; do
echo "========== $i =========="
ssh $i "cd /opt/module/applog/; java -jar gmall2020-mock-log-2021-01-22.jar >/dev/null 2>&1 &"
done 注:
①/opt/module/applog/为 jar 包及配置文件所在路径
②/dev/null 代表 Linux 的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。
标准输入 0:从键盘获得输入 /proc/self/fd/0
标准输出 1:输出到屏幕(即控制台) /proc/self/fd/1
错误输出 2:输出到屏幕(即控制台) /proc/self/fd/2
修改脚本执行权限
chmod 777 lg.sh将 jar 包及配置文件上传至 hadoop103 的/opt/module/applog/路径
启动脚本
lg.sh 分别在 hadoop102、hadoop103 的/opt/module/applog/log 目录上查看生成的数据
3.3 数据采集模块
3.3.1 集群所有进程查看脚本
在/home/duan/bin 目录下创建脚本 xcall.sh
vim xcall.sh在脚本中编写如下内容
#! /bin/bash
for i in hadoop102 hadoop103 hadoop104
do
echo --------- $i ----------
ssh $i "$*"
done修改脚本执行权限
chmod 777 xcall.sh启动脚本
xcall.sh jps3.3 安装 Hadoop

详见下列内容:
Hadoop 实操-2—完全分布式运行-starryv.top
3.4 安装 Zookeeper

详见下列内容: Zookeeper 安装与部署-starryv.top
3.5 安装 Kafka

详见下列内容:
3.6 Flume安装
3.6.1 采集flume安装

详见下列内容:日志采集Flume -starryv.top
3.6.2 消费Kafka的flume安装

详见下列内容:消费Kafka数据Flume-starryv.top
3.7 采集通道与停止
详见下列内容:采集通道启动和停止-starryv.top
当前项目进程——已完成用户行为数据的生成(模拟数据)以及采集
