1. 程式人生 > 其它 >Centos8.3、hadoop-2.6.4 簡單的日誌分析實驗

Centos8.3、hadoop-2.6.4 簡單的日誌分析實驗

引言 前段時間答應朋友做一個hadoop分析日誌的教程,說完就後悔了,我已經很久沒碰它了,為了實現這個承諾不得以又把以前買的書找出來研究一下。值得慶幸的是以前的筆記還在不需要我從頭再來。不過搭建hadoop的環境很複雜,我也不準備做從零開始的教程,我準備把我搭建好的環境直接搬過來了,這樣不用糾結環境搭建的複雜,也不需要了解Map/Reducer程式設計就可以直接體驗一下hadoop的魅力。

環境準備

序號 環境和資料 版本 下載地址
1 CentOS-8.3.2011-x86_64-minimal.iso 8.3

連結: https://pan.baidu.com/s/1kWRffCoup2Oxat953ZAe5w 提取碼: ml2e

2 hadoop-2.6.4.tar.gz 2.6.4

連結: https://pan.baidu.com/s/1A_fqViL62xrZ6rnA1M8nYQ 提取碼: nfna

3 jdk-7u80-linux-x64.rpm 1.7

連結: https://pan.baidu.com/s/1sGneDO4jcfk5ZlbOLVZVpA 提取碼: 5nmj

4 access.txt

連結: https://pan.baidu.com/s/1aKlVcXrrWo5kEmoWa7DD8Q 提取碼: 5bgu

注意:請一定使用以上的地址下載的,不然可能出現很多未知的問題。hadoop-2.6.4.tar.gz 配置檔案是我改過的,access.txt 是用來測試的tomcat日誌資料。

第一步 使用虛擬機器軟體安裝作業系統(沒有裝過的同學可以去補下課,這裡就不講了)

第二步 作業系統安裝好後,先關閉防火牆順便安裝一下vim,具體操作如下:

systemctl stop firewalld.service     #停止firewall
systemctl disable firewalld.service  #禁止firewall開機啟動
yum -y install vim #安裝vim

第三步 使用上面的下載地址下載jdk1.7上傳到剛才建立的centos8.3虛擬機器使用命令安裝(這裡一定要使用rpm安裝因為這個安裝目錄是固定的)安裝目錄為/usr/java/jdk1.7.0_80 這個jdk的目錄已經被我寫在hadoop配置中。安裝命令如下

rpm -ivh jdk-7u80-linux-x64.rpm #rpm 安裝jdk

java -version #檢視安裝是否成功

第四步 使用上面地址下載hadoop-2.6.4.tar.gz(注意這個包基本配置都是配置好的,不需要做調整的) 包 然後解壓到 /usr/local 目錄下 解壓命令如下

tar -zxf hadoop-2.6.4.tar.gz -C /usr/local

第五步 編輯/etc/profile 檔案新增內容如下

vim /etc/profile # 開啟檔案編輯

# 在檔案尾部追加以下內容
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/jre
export HADOOP_HOME=/usr/local/hadoop-2.6.4/bin
export PATH=$PATH:$HADOOP_HOME

source /etc/profile#儲存檔案後執行

完成後 執行 hadoop 或者hdfs 命令看看是否成功 正確結果如

第六步 關閉虛擬機器然後克隆一臺例項(這裡做實驗克隆一臺就夠了)

克隆完成修改例項名稱 第一臺例項hostname 更改為master 第二臺例項更改為slave1 如下圖:

vim /etc/hostname #編輯例項名稱

reboot            #重啟boot

第七步 配置ssh 無金鑰訪問

1.在master例項執行

ssh-keygen -t rsa

注意這裡所有輸入直接回車

2.在slave1例項執行(同上所有輸入直接回車)

ssh-keygen -t rsa

注意 slave1例項上我們cd 到/root/.ssh/ 目錄 使用ls命令檢視 有兩個檔案分別是id_rsa 和 id_rsa.pub 我們拷貝id_rsa.pub 檔案並且重新命名為slave1 然後複製slave1檔案到master例項上 命令如下

cd /root/.ssh/                                 #跳轉到/root/.ssh目錄
cp id_rsa.pub ./slave1                         #複製 id_rsa.pub檔案並且重名命為slave1
scp ./slave1 root@172.16.102.15:/root/.ssh/    #將slave1檔案複製到master例項/root/.ssh/目錄下  注意 (1).要輸入yes 和 master例項的密碼。(2)172.16.102.15 這個是master例項的ip根據自己master實際ip修改

如下圖:(圖片這裡master ip地址寫錯了 應該是172.16.102.15 而不是16)

然後我們來到master例項同樣到/root/.ssh 目錄下合併master例項的id_rsa.pub 檔案和slave1例項複製過來的檔案並且命名為authorized_keys 命令如下:

cd /root/.ssh/
cat id_rsa.pub slave1 >>authorized_keys                   #合併master和slave1的金鑰檔案
scp ./authorized_keys root@172.16.102.16:/root/.ssh       #複製合併後的檔案到slave1例項  注意 172.16.102.16 是slave1的ip要根據自己實際的ip修改命令

操作如下圖:

測試效果

第八步 編輯/etc/hosts檔案 如下圖

注意這兩個ip要改成自己實際的ip然後同步host檔案到其他例項 這裡我是在master例項上編輯的所以需要同步到slave1例項。執行如下命令:

scp /etc/hosts slave1:/etc/hosts

第九步 編輯 master例項子中 hadoop的slave檔案 檔案位於/usr/local/hadoop-2.6.4/etc/hadoop 編輯內容很簡單之前在slave中我配置了三臺slave例項現在只有一臺 刪除另外兩個配置就好 結果如下

第十步 格式化節點 在master、slave例項分別執行

 hdfs namenode -format

執行結果如下:

第十一步 嘗試啟動hadoop 我們來到master例項 /usr/local/hadoop-2.6.4 目錄下執行./start_hadoop.sh 指令碼 正確結果如下

在master例項執行jps命令測試正確結果如下

在slave1例項上測試正確結果如下

第十二步訪問管理介面

修改自己本機器的hosts檔案 新增

172.16.102.15 master
172.16.102.16 slave1

http://master:50070/dfshealth.html#tab-overview

http://master:8088/cluster

http://master:19888/jobhistory

http://master:50070/nn_browsedfscontent.jsp 本次實驗主要使用的是這個地址

訪問後介面如下

到這環境終於準備好了,即使我是複製之前搭建的環境,還是有點複雜。現在我們開始準備日誌分析。

第一步上傳日誌檔案到master例項然後在上傳到hdfs 上傳檔案到hdfs需要先hdfs資料夾 建立和上傳命令如下

hdfs dfs -mkdir /aiatt                    #建立aiatt資料夾
hdfs dfs -put ./access.txt /aiatt #上傳access 日誌檔案到hdfs檔案系統 aiatt目錄下

操作結果如下:

然後我們重新整理http://master:50070/nn_browsedfscontent.jsp 頁面檢視結果

現在我們開始執行Map/Reduce 任務任務如下:

這段日誌是某個tomcat的請求記錄日誌,現在我們想要的結果是計算出每個請求請求的頻率 然後針對有請求頻率過高的介面做優化或者快取。針對這個任務的MapReduce我也已經寫好了 直接下載

連結: https://pan.baidu.com/s/1Wu6uDSBBZK9Wsaue1kmWXQ 提取碼: obw5
然後上傳到master例項執行一下命令

hadoop jar ./aiatt.jar /aiatt/access.txt /aiatt/output/result
/aiatt/access.txt 是輸入的檔案地址   /aiatt/output/result 輸出結果地址
這個兩個地址都是hdfs 的地址 另外要注意重複執行任務輸出地址不能一致,不然會報錯。執行結果如下圖:

最後我們重新整理 剛才的hdfs檔案檢視的地址檢視計算結果

到這裡就結束了 這個實驗主要是想讓未接觸過hadoop的體驗一下,如果真的想學習的話推薦 《Hadoop大資料開發基礎》這本書 ,我就是看這本書自學的,雖然這本書有幾個小錯誤但是還是不錯的入門書