zoukankan      html  css  js  c++  java
  • 离线电商数仓(四)之用户行为数据采集(四)数据生成模块(二) 数据生成

    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

  • 相关阅读:
    [Vue warn]: Error in render: "TypeError: Cannot read property '0' of undefined、vuejs路由使用的问题Error in render function
    web 实时通信的方法总结
    SVN相关
    Redis__WindowsServer主从服务部署及调用实例
    Sqlserver__数据表排序记录和界面显示排序记录不一致的问题
    redis_常见问题
    redis_常用命令
    电商项目系列文档(二)
    redis配置文件redis.conf参数说明
    CMD_命令行
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14117816.html
Copyright © 2011-2022 走看看