• 离线电商数仓(四)之用户行为数据采集(四)数据生成模块(二) 数据生成


    3 服务器和JDK准备

    3.1 服务器准备

    安装如下文档配置步骤,分别安装hadoop102hadoop103hadoop104三台主机。

    3.2 阿里云服务器准备(可选)

    3.3 JDK准备

    1卸载现有JDK3台节点)

    [atguigu@hadoop102 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

    [atguigu@hadoop103 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

    [atguigu@hadoop104 opt]# sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

    2SecureCRT工具将JDK导入到hadoop102/opt/software文件夹下面

    3 “alt+p进入sftp模式

    4)选择jdk1.8拖入工具

    5Linux系统下的opt目录中查看软件包是否导入成功

    [atguigu@hadoop102 software]# ls /opt/software/

    看到如下结果:

    jdk-8u212-linux-x64.tar.gz

    6解压JDK/opt/module目录下

    [atguigu@hadoop102 software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

    7配置JDK环境变量

    1新建/etc/profile.d/my_env.sh文件

    [atguigu@hadoop102 module]# sudo vim /etc/profile.d/my_env.sh

    添加如下内容,然后保存(:wq)退出

    #JAVA_HOME

    export JAVA_HOME=/opt/module/jdk1.8.0_212

    export PATH=$PATH:$JAVA_HOME/bin

    2让环境变量生效

    [atguigu@hadoop102 software]$ source /etc/profile.d/my_env.sh

    8测试JDK是否安装成功

    [atguigu@hadoop102 module]# java -version

    如果能看到以下结果、则Java正常安装

    java version "1.8.0_212"

    9)分发JDK 

    [atguigu@hadoop102 module]$ xsync /opt/module/jdk1.8.0_212/

    10)分发环境变量配置文件

    [atguigu@hadoop102 module]$ sudo /home/atguigu/bin/xsync /etc/profile.d/my_env.sh

    11)分别在hadoop103hadoop104上执行source

    [atguigu@hadoop103 module]$ source /etc/profile.d/my_env.sh

    [atguigu@hadoop104 module]$ source /etc/profile.d/my_env.sh

    3.4 环境变量配置说明

    Linux的环境变量可在多个文件中配置,如/etc/profile/etc/profile.d/*.sh~/.bashrc等,下面说明上述几个文件之间的关系和区别。

    bash的运行模式可分为login shellnon-login shell。

    例如,我们通过终端,输入用户名、密码,登录系统之后,得到就是一个login shell,而当我们执行以下命令ssh hadoop103 command,在hadoop103执行command的就是一个non-login shell。

    这两种shell的主要区别在于,它们启动时会加载不同的配置文件,login shell启动时会加载/etc/profilenon-login shell启动时会加载~/.bashrc。

    而在加载~/.bashrc(实际是~/.bashrc中加载的/etc/bashrc)或/etc/profile时,都会执行如下代码片段,

    因此不管是login shell还是non-login shell,启动时都会加载/etc/profile.d/*.sh中的环境变量。

    4 模拟数据

    4.1 使用说明

    1)将application.propertiesgmall2020-mock-log-2020-05-10.jarpath.jsonlogback.xml上传到hadoop102/opt/module/applog目录下

    1)创建applog路径

    [atguigu@hadoop102 module]$ mkdir /opt/module/applog

    2)上传文件

    2)配置文件

    1application.properteis文件

    可以根据需求生成对应日期的用户行为日志。

    [atguigu@hadoop102 applog]$ vim application.properties

    修改如下内容

    # 外部配置打开
    logging.config=./logback.xml
    #业务日期
    mock.date=2020-06-14
    
    #模拟数据发送模式
    mock.type=log
    #mock.type=http
    #http模式下,发送的地址
    mock.url=http://localhost:8080/applog
    
    #启动次数
    mock.startup.count=100
    #设备最大值
    mock.max.mid=50
    #会员最大值
    mock.max.uid=500
    #商品最大值
    mock.max.sku-id=10
    #页面平均访问时间
    mock.page.during-time-ms=20000
    #错误概率 百分比
    mock.error.rate=3
    #每条日志发送延迟 ms
    mock.log.sleep=10
    #商品详情来源  用户查询,商品推广,智能推荐, 促销活动
    mock.detail.source-type-rate=40:25:15:20

    2path.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":50 },
      {"path":["home","mine","orders_unpaid","trade","payment"],"rate":10 },
      {"path":["home","mine","orders_unpaid","good_detail","good_spec","comments","trade","payment"],"rate":10 },
      {"path":["home","mine","orders_unpaid","good_detail","good_spec","comments","home"],"rate":10 }
    ]

    (3logback配置文件

    可配置日志生成路径,修改内容如下

    <?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.Mocker"
                level="INFO" additivity="true">
            <appender-ref ref="rollingFile" />
             <appender-ref ref="console" />
        </logger>
    
        <root level="error" additivity="true">
            <appender-ref ref="console" />
            <!-- <appender-ref ref="async-rollingFile" />  -->
        </root>
    </configuration>

    3)生成日志

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

    [atguigu@hadoop102 applog]$ java -jar gmall2020-mock-log-2020-05-10.jar

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

    [atguigu@hadoop102 log]$ ll

    4.2 集群日志生成脚本

    hadoop102/home/atguigu目录下创建bin目录,这样脚本可以在服务器的任何目录执行。

    [atguigu@hadoop102 ~]$ echo $PATH

    /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/atguigu/.local/bin:/home/atguigu/bin

    1)在/home/atguigu/bin目录下创建脚本lg.sh

    [atguigu@hadoop102 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-2020-05-10.jar >/dev/null 2>&1 &"
    done 

    注:

    1/opt/module/applog/jar包及配置文件所在路径

    2/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。

    标准输入0:从键盘获得输入 /proc/self/fd/0

    标准输出1:输出到屏幕(即控制台) /proc/self/fd/1

    错误输出2:输出到屏幕(即控制台) /proc/self/fd/2

    3)修改脚本执行权限

    [atguigu@hadoop102 bin]$ chmod u+x lg.sh

    4)将jar包及配置文件上传至hadoop103/opt/module/applog/路径

    5)启动脚本

    [atguigu@hadoop102 module]$ lg.sh

    6)分别hadoop102hadoop103/opt/module/applog/log目录查看生成的数据

    [atguigu@hadoop102 logs]$ ls

    app.2020-06-14.log

    [atguigu@hadoop103 logs]$ ls

    app.2020-06-14.log

     

    本文来自博客园,作者:秋华,转载请注明原文链接:https://www.cnblogs.com/qiu-hua/p/14117816.html

  • 相关阅读:
    Vue23 ref属性
    Vue27 scoped样式
    Vue 24 props
    Vue21 组件
    Vue25 mixin
    Vue29 自定义事件及消息总线
    Vue28 Web Storage
    AcWing2022寒假每日一题(1 月 2 日 ~ 1 月 15 日)
    leetcode 206. Reverse Linked List 反转链表(简单)
    leetcode 647. Palindromic Substrings回文子串(中等)
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14117816.html
Copyright © 2020-2023  润新知