数据仓库-2——用户行为数据生成和采集

3. 用户行为数据生成和采集 3.1 数据生成模块 3.1.1 目标数据 页面 事件 曝光 <

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 目录下

  1. 创建 applog 路径

 mkdir /opt/module/applog
  1. 上传文件 application.yml 到/opt/module/applog 目录

3.2.2 配置文件

  1. 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,苹果手机,小米盒子"
  1. 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 }
 ]
  1. 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. 生成日志

(1)进入到/opt/module/applog 路径,执行以下命令

 java -jar gmall2020-mock-log-2021-01-22.jar

(2)在/opt/module/applog/log 目录下查看生成日志

  ll

3.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


  1. 修改脚本执行权限

 chmod 777 lg.sh
  1. 将 jar 包及配置文件上传至 hadoop103 的/opt/module/applog/路径

  2. 启动脚本

  lg.sh 
  1. 分别在 hadoop102、hadoop103 的/opt/module/applog/log 目录上查看生成的数据

3.3 数据采集模块

3.3.1 集群所有进程查看脚本

  1. 在/home/duan/bin 目录下创建脚本 xcall.sh

 vim xcall.sh
  1. 在脚本中编写如下内容

 #! /bin/bash
  
 for i in hadoop102 hadoop103 hadoop104
 do
     echo --------- $i ----------
     ssh $i "$*"
 done
  1. 修改脚本执行权限

 chmod 777 xcall.sh
  1. 启动脚本

 xcall.sh jps

3.3 安装 Hadoop

详见下列内容:

Hadoop 实操-1—环境准备-starryv.top

Hadoop 实操-2—完全分布式运行-starryv.top

Hadoop 实操-3-starryv.top

3.4 安装 Zookeeper

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

3.5 安装 Kafka

详见下列内容:

Kafka 安装与部署-starryv.top

3.6 Flume安装

3.6.1 采集flume安装

详见下列内容:日志采集Flume -starryv.top

3.6.2 消费Kafka的flume安装

详见下列内容:消费Kafka数据Flume-starryv.top

3.7 采集通道与停止

详见下列内容:采集通道启动和停止-starryv.top

当前项目进程——已完成用户行为数据的生成(模拟数据)以及采集


Comment