1. 程式人生 > 其它 >JDK安裝環境變數配置,模擬日誌資料生成

JDK安裝環境變數配置,模擬日誌資料生成

技術標籤:大資料linuxJDKshell

JDK準備

使用命令:sudo rpm -qa | grep -i java 可檢視是否有需要解除安裝的JDK rpm安裝包

1解除安裝現有JDK(3臺節點)

[[email protected]opt]#sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[[email protected]opt]#sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

[[email protected]
opt]#sudo rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps

2將JDK匯入到hadoop102的/opt/software資料夾下面解壓JDK

[[email protected] software]# tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

3)配置JDK環境變數

(1)新建/etc/profile.d/my_env.sh檔案

[[email protected] 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)讓環境變數生效

[[email protected] software]$ source /etc/profile.d/my_env.sh

4)測試JDK是否安裝成功

[[email protected] module]# java -version

如果能看到以下結果、則Java正常安裝

java version "1.8.0_212"

5)分發JDK

[[email protected]
module]$xsync /opt/module/jdk1.8.0_212/

6)分發環境變數配置檔案

[[email protected] module]$xsync /opt/module/jdk1.8.0_212/

7)分別在hadoop103、hadoop104上執行source

[[email protected] module]$ source /etc/profile.d/my_env.sh

[[email protected] module]$ source /etc/profile.d/my_env.sh

環境變數配置說明

Linux的環境變數可在多個檔案中配置,如/etc/profile,/etc/profile.d/*.sh,~/.bashrc等,下面說明上述幾個檔案之間的關係和區別。

bash的執行模式可分為loginshell和non-login shell。

例如,我們通過終端,輸入使用者名稱、密碼,登入系統之後,得到就是一個loginshell,而當我們執行以下命令sshhadoop103 command,在hadoop103執行command的就是一個non-login shell。

這兩種shell的主要區別在於,它們啟動時會載入不同的配置檔案,loginshell啟動時會載入/etc/profile,non-loginshell啟動時會載入~/.bashrc。

而在載入~/.bashrc(實際是~/.bashrc中載入的/etc/bashrc)或/etc/profile時,都會執行如下程式碼片段,

因此不管是loginshell還是non-loginshell,啟動時都會載入/etc/profile.d/*.sh中的環境變數。

模擬資料

1)將application.propertiesgmall2020-mock-log-2020-05-10.jarpath.jsonlogback.xml上傳到hadoop102的/opt/module/applog目錄下

(1)建立applog路徑

[[email protected] module]$ mkdir /opt/module/applog

(2)上傳檔案

2)配置檔案

(1)application.properteis檔案

可以根據需求生成對應日期的使用者行為日誌。

[[email protected] 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

(2)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":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 }

]

(3)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.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路徑,執行以下命令

[[email protected] applog]$ java -jar gmall2020-mock-log-2020-05-10.jar

(2)在/opt/module/applog/log目錄下檢視生成日誌

[[email protected] log]$ ll

叢集日誌生成指令碼

在hadoop102/home/atguigu目錄下建立bin目錄,這樣指令碼可以在伺服器的任何目錄執行。

[[email protected] ~]$ 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

[[email protected] 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)修改指令碼執行許可權

[[email protected] bin]$ chmod u+x lg.sh

4)將jar包及配置檔案上傳至hadoop103/opt/module/applog/路徑

5)啟動指令碼

[[email protected] module]$ lg.sh

6)分別在hadoop102hadoop103的/opt/module/applog/log目錄檢視生成的資料

[[email protected] logs]$ ls

app.2020-06-14.log

[[email protected] logs]$ ls

app.2020-06-14.log