JDK安裝環境變數配置,模擬日誌資料生成
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.properties、gmall2020-mock-log-2020-05-10.jar、path.json、logback.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)分別在hadoop102、hadoop103的/opt/module/applog/log目錄上檢視生成的資料
[[email protected] logs]$ ls
app.2020-06-14.log
[[email protected] logs]$ ls
app.2020-06-14.log