文章目錄
- 實戰章節:在Linux上部署各類軟件
- tar -zxvf各個選項的含義
- 為什么學習各類軟件在Linux上的部署
- 一 MySQL數據庫管理系統安裝部署【簡單】
- MySQL5.7版本在CentOS系統安裝
- MySQL8.0版本在CentOS系統安裝
- MySQL5.7版本在Ubuntu(WSL環境)系統安裝
- MySQL8.0版本在Ubuntu(WSL環境)系統安裝
- 二 Tomcat安裝部署【簡單】
- 安裝JDK環境
- 解壓并部署Tomcat
- 三 Nginx安裝部署【簡單】
- 四 RabbitMQ安裝部署【簡單】
- 五 Redis安裝部署【簡單】
- 六 ElasticSearch安裝部署
- 七 集群化環境前置準備
- 配置SSH免密登錄
- 關閉防火墻和SELinux
- 添加快照
- 補充命令 - scp
- 八 Zookeeper集群安裝部署
- 九 Kafka集群安裝部署
- 十 大數據集群(Hadoop生態)安裝部署
- 十一 大數據NoSQL數據庫HBase集群部署
- 十二 分布式內存計算Spark環境部署
- 十三 分布式內存計算Flink環境部署
- 十四 運維監控Zabbix部署
- zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix1234!
- 十五 運維監控Grafana部署
實戰章節:在Linux上部署各類軟件
tar -zxvf各個選項的含義
tar -zxvf
是常見的 Linux 中用于解壓 .tar.gz
文件的命令組合。以下是各個選項的詳細含義:
字母 | 含義 |
---|---|
-z | gzip:表示使用 gzip 壓縮格式,解壓 .tar.gz 文件時必須加上此選項。 |
-x | extract:表示解壓歸檔文件(從壓縮包中提取文件和目錄)。 |
-v | verbose:顯示詳細的解壓過程,將解壓的每個文件名稱輸出到屏幕,方便用戶查看進度。 |
-f | file:指定要操作的文件(后面必須跟上目標文件的名稱,比如 file.tar.gz )。 |
常見組合
- 解壓
.tar.gz
文件
tar -zxvf file.tar.gz
解壓 file.tar.gz
文件到當前目錄。
過程會顯示解壓出的文件和目錄名稱。
- 解壓
.tar.gz
文件到指定目錄
tar -zxvf file.tar.gz -C /path/to/directory
使用 -C
指定解壓后的目標目錄,例如 /path/to/directory
。
- 壓縮目錄為
.tar.gz
文件
tar -zcvf file.tar.gz directory_name
壓縮 directory_name
目錄為 file.tar.gz
。
選項補充
選項 | 功能 |
---|---|
-c | create:創建一個歸檔文件(打包文件)。 |
-t | list:列出歸檔文件的內容,而不解壓。 |
-C | directory:解壓文件到指定目錄。 |
--exclude | 排除指定文件或目錄不加入歸檔。 |
具體示例
查看 .tar.gz
文件內容
tar -ztvf file.tar.gz
顯示文件內容而不解壓,列出文件的結構。
只解壓指定的文件
tar -zxvf file.tar.gz file1 file2
僅解壓 file1
和 file2
兩個文件。
總結
tar -zxvf
的含義可以分解為:
z:處理 gzip
壓縮。
x:解壓文件。
v:顯示詳細解壓過程。
f:指定操作的文件。
這是一個常用的 Linux 解壓命令組合,用于處理 .tar.gz
文件。根據需要,您可以靈活添加其他選項來完成復雜的壓縮或解壓操作!
為什么學習各類軟件在Linux上的部署
在前面,我們學習了許多的Linux命令和高級技巧,這些知識點比較零散,同學們跟隨著課程的內容進行練習雖然可以基礎掌握這些命令和技巧的使用,但是并沒有一些具體的實操能夠串聯起來這些知識點。
前置要求
- 實戰章節要求同學們務必全部學習前面的知識點,即:初識Linux、Linux基礎命令、Linux權限管理、Linux高階技巧這4個章節,請勿跳過前面的章節學習實戰章節。
- 實戰章節中會開啟多臺虛擬機,請盡量確保電腦的內存在:8GB(包含8GB)以上。如內存不足可以擴充內存條或購買阿里云、UCloud等云服務器臨時使用(1個月多臺低配服務器幾十塊左右)
對于云平臺上購買服務器,可以參閱最后的章節(云服務)
注意
下面全部的軟件安裝的相關流程,90%都是取自軟件自身的官方網站。
一個合格的程序員要有良好的信息收集能力哦
一 MySQL數據庫管理系統安裝部署【簡單】
MySQL5.7版本在CentOS系統安裝
注意:安裝操作需要root權限
MySQL的安裝我們可以通過前面學習的yum命令進行。
安裝
- 配置yum倉庫
# 更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql yum庫
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
由于MySQL并不在CentOS的官方倉庫中,所以我們通過上述rpm命令:
- <font style="color:rgb(119, 119, 119);">導入MySQL倉庫的密鑰</font>
- <font style="color:rgb(119, 119, 119);">配置MySQLQ的yum倉庫</font>
- 使用yum安裝MySQL
# yum安裝Mysql
yum -y install mysql-community-server
- 安裝完成后,啟動MySQL并配置開機自啟動
systemctl start mysqld # 啟動
systemctl enable mysqld # 開機自啟
MySQL安裝完成后,會自動配置為名稱叫做:<font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">mysqld</font>
的服務,可以被systemctl所管理
檢查MySQL的運行狀態
- systemctl status mysqld
配置
主要配置管理員用戶root的密碼以及配置允許遠程登錄的權限。
- 獲取MySQL的初始密碼
# 通過grep命令,在/var/log/mysqld.log文件中,過濾temporary password關鍵字,得到初始密碼
grep 'temporary password' /var/log/mysqld.log
- 登陸MySQL數據庫系統
# 執行
mysql -uroot -p
# 解釋
# -u,登陸的用戶,MySQL數據庫的管理員用戶同Linux一樣,是root
# -p,表示使用密碼登陸# 執行完畢后輸入剛剛得到的初始密碼,即可進入MySQL數據庫
- 修改root用戶密碼
# 在MySQL控制臺內執行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密碼'; -- 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc
- [擴展],配置root的簡單密碼
我們可以給root設置簡單密碼,如123456.
請注意,此配置僅僅是用于測試環境或學習環境的MySQL,如果是正式使用,請勿設置簡單密碼
# 如果你想設置簡單密碼,需要降低Mysql的密碼安全級別
set global validate_password_policy=LOW; # 密碼安全級別低
set global validate_password_length=4; # 密碼長度最低4位即可# 然后就可以用簡單密碼了(課程中使用簡單密碼,為了方便,生產中不要這樣)
ALTER USER 'root'@'localhost' IDENTIFIED BY '簡單密碼';
- [擴展],配置root運行遠程登錄
默認情況下,root用戶是不運行遠程登錄的,只允許在MySQL所在的Linux服務器登陸MySQL系統
請注意,允許root遠程登錄會帶來安全風險
# 授權root遠程登錄
grant all privileges on *.* to root@"IP地址" identified by '密碼' with grant option;
# IP地址即允許登陸的IP地址,也可以填寫%,表示允許任何地址
# 密碼表示給遠程登錄獨立設置密碼,和本地登陸的密碼可以不同# 刷新權限,生效
flush privileges;
- 退出MySQL控制臺頁面
# 退出命令
exit# 或者通過快捷鍵退出:ctrl + d
檢查端口
MySQL默認綁定了3306端口,可以通過端口占用檢查MySQL的網絡狀態
- netstat -anp | grep 3306
至此,MySQL就安裝完成并可用了,請妥善保存好MySQL的root密碼。
MySQL8.0版本在CentOS系統安裝
注意:安裝操作需要root權限
安裝
- 配置yum倉庫
# 更新密鑰
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql8.x版本 yum庫
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
- 使用yum安裝MySQL
# yum安裝Mysql
yum -y install mysql-community-server
- 安裝完成后,啟動MySQL并配置開機自啟動
systemctl start mysqld # 啟動
systemctl enable mysqld # 開機自啟
MySQL安裝完成后,會自動配置為名稱叫做:<font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">mysqld</font>
的服務,可以被systemctl所管理
檢查MySQL的運行狀態
- systemctl status mysqld
配置
主要修改root密碼和允許root遠程登錄
- 獲取MySQL的初始密碼
# 通過grep命令,在/var/log/mysqld.log文件中,過濾temporary password關鍵字,得到初始密碼
grep 'temporary password' /var/log/mysqld.log
- 登錄MySQL數據庫系統
# 執行
mysql -uroot -p
# 解釋
# -u,登陸的用戶,MySQL數據庫的管理員用戶同Linux一樣,是root
# -p,表示使用密碼登陸# 執行完畢后輸入剛剛得到的初始密碼,即可進入MySQL數據庫
修改root密碼
- ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘密碼’; – 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc
- [擴展],配置root的簡單密碼
我們可以給root設置簡單密碼,如123456.
請注意,此配置僅僅是用于測試環境或學習環境的MySQL,如果是正式使用,請勿設置簡單密碼
set global validate_password.policy=0; # 密碼安全級別低
set global validate_password.length=4; # 密碼長度最低4位即可
- 允許root遠程登錄,并設置遠程登錄密碼
默認情況下,root用戶是不運行遠程登錄的,只允許在MySQL所在的Linux服務器登陸MySQL系統
請注意,允許root遠程登錄會帶來安全風險
# 第一次設置root遠程登錄,并配置遠程密碼使用如下SQL命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼!'; -- 密碼需要符合:大于8位,有大寫字母,有特殊符號,不能是連續的簡單語句如123,abc# 后續修改密碼使用如下SQL命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密碼';
- 退出MySQL控制臺頁面
# 退出命令
exit# 或者通過快捷鍵退出:ctrl + d
檢查端口
MySQL默認綁定了3306端口,可以通過端口占用檢查MySQL的網絡狀態
- netstat -anp | grep 3306
至此,MySQL就安裝完成并可用了,請妥善保存好MySQL的root密碼。
MySQL5.7版本在Ubuntu(WSL環境)系統安裝
課程中配置的WSL環境是最新的Ubuntu22.04版本,這個版本的軟件商店內置的MySQL是8.0版本
所以我們需要額外的步驟才可以安裝5.7版本的MySQL
安裝操作需root權限,你可以:
- 通過 sudo su -,切換到root用戶
課程中選擇這種方式操作
- 或在每一個命令前,加上sudo,用來臨時提升權限
安裝
- 下載apt倉庫文件
# 下載apt倉庫的安裝包,Ubuntu的安裝包是.deb文件
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
- 配置apt倉庫
# 使用dpkg命令安裝倉庫
dpkg -i mysql-apt-config_0.8.12-1_all.deb
彈出框中選擇:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">ubuntu bionic</font>
(Ubuntu18.04系統的代號是bionic,選擇18.04的版本庫用來安裝)
彈出框中選擇:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">MySQL Server & Cluster</font>
彈出框中選擇:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">mysql-5.7</font>
最后選擇:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">ok</font>
- 更新apt倉庫的信息
# 首先導入倉庫的密鑰信息
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 467B942D3A79BD29
# 更新倉庫信息
apt update
檢查是否成功配置MySQL5.7的倉庫
- apt-cache policy mysql-server
看到如圖所示字樣,即成功
- 安裝MySQL5.7
# 使用apt安裝mysql客戶端和mysql服務端
apt install -f -y mysql-client=5.7* mysql-community-server=5.7*
彈出框中輸入root密碼并選擇ok,密碼任意,課程中以123456代替
再次輸入root密碼確認
- 啟動MySQL
/etc/init.d/mysql start # 啟動
/etc/init.d/mysql stop # 停止
/etc/init.d/mysql status # 查看狀態
- 對MySQL進行初始化
# 執行如下命令,此命令是MySQL安裝后自帶的配置程序
mysql_secure_installation
# 可以通過which命令查看到這個自帶程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
1. <font style="color:rgb(51, 51, 51);">輸入密碼:</font>
2. <font style="color:rgb(51, 51, 51);">是否開啟密碼驗證插件,如果需要增強密碼安全性,輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">并回車,不需要直接回車(課程中選擇直接回車)</font>
3. <font style="color:rgb(51, 51, 51);">是否更改root密碼,需要輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不需要直接回車(課程不更改)</font>
4. <font style="color:rgb(51, 51, 51);">是否移除匿名用戶,移除輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不移除直接回車(課程選擇移除)</font>
5. <font style="color:rgb(51, 51, 51);">是否進制root用戶遠程登錄,禁止輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不禁止直接回車(課程選擇不禁止)</font>
6. <font style="color:rgb(51, 51, 51);">是否移除自帶的測試數據庫,移除輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不移除直接回車(課程選擇不移除)</font>
7. <font style="color:rgb(51, 51, 51);">是否刷新權限,刷新輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不刷新直接回車(課程選擇刷新)</font>
- 登陸MySQL
mysql -uroot -p
# 輸入密碼即可登陸成功
至此,在Ubuntu上安裝MySQL5.7版本成功。
MySQL8.0版本在Ubuntu(WSL環境)系統安裝
課程中配置的WSL環境是最新的Ubuntu22.04版本,這個版本的軟件商店內置的MySQL是8.0版本
所以直接可以通過apt安裝即可
注意,課程是以WSL獲得的Ubuntu操作系統環境。
如果你通過VMware虛擬機的方式獲得了Ubuntu操作系統環境,操作步驟不用擔心,和課程中使用WSL環境是完全一致的
安裝操作需root權限,你可以:
- 通過 sudo su -,切換到root用戶
課程中選擇這種方式操作
- 或在每一個命令前,加上sudo,用來臨時提升權限
安裝
- 如果已經安裝過MySQL5.7版本,需要卸載倉庫信息哦
# 卸載MySQL5.7版本
apt remove -y mysql-client=5.7* mysql-community-server=5.7*# 卸載5.7的倉庫信息
dpkg -l | grep mysql | awk '{print $2}' | xargs dpkg -P
更新apt倉庫信息
- apt update
安裝mysql
- apt install -y mysql-server
- 啟動MySQL
/etc/init.d/mysql start # 啟動
/etc/init.d/mysql stop # 停止
/etc/init.d/mysql status # 查看狀態
- 登陸MySQL設置密碼
# 直接執行:mysql
mysql
設置密碼
- ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘password’;
退出MySQL控制臺
- exit
- 對MySQL進行初始化
# 執行如下命令,此命令是MySQL安裝后自帶的配置程序
mysql_secure_installation
# 可以通過which命令查看到這個自帶程序所在的位置
root@DESKTOP-Q89USRE:~# which mysql_secure_installation
/usr/bin/mysql_secure_installation
1. <font style="color:rgb(51, 51, 51);">輸入密碼:</font>
2. <font style="color:rgb(51, 51, 51);">是否開啟密碼驗證插件,如果需要增強密碼安全性,輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">并回車,不需要直接回車(課程中選擇直接回車)</font>
3. <font style="color:rgb(51, 51, 51);">是否更改root密碼,需要輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不需要直接回車(課程不更改)</font>
4. <font style="color:rgb(51, 51, 51);">是否移除匿名用戶,移除輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不移除直接回車(課程選擇移除)</font>
5. <font style="color:rgb(51, 51, 51);">是否進制root用戶遠程登錄,禁止輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不禁止直接回車(課程選擇不禁止)</font>
6. <font style="color:rgb(51, 51, 51);">是否移除自帶的測試數據庫,移除輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不移除直接回車(課程選擇不移除)</font>
7. <font style="color:rgb(51, 51, 51);">是否刷新權限,刷新輸入</font>`<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">y</font>`<font style="color:rgb(51, 51, 51);">回車,不刷新直接回車(課程選擇刷新)</font>
重新登陸MySQL(用更改后的密碼)
- mysql -uroot -p
至此,在Ubuntu上安裝MySQL5.7版本成功。
二 Tomcat安裝部署【簡單】
簡介
Tomcat 是由 Apache 開發的一個 Servlet 容器,實現了對 Servlet 和 JSP 的支持,并提供了作為Web服務器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。
簡單來說,Tomcat是一個WEB應用程序的托管平臺,可以讓用戶編寫的WEB應用程序,被Tomcat所托管,并提供網站服務。
即讓用戶開發的WEB應用程序,變成可以被訪問的網頁。
安裝
Tomcat的安裝非常簡單,主要分為2部分:
- 安裝JDK環境
- 解壓并安裝Tomcat
本次安裝使用Tomcat版本是:10.0.27版本,需要Java(JDK)版本最低為JDK8或更高版本
課程中使用的JDK版本是:JDK8u351版本
安裝JDK環境
- 下載JDK軟件
https://www.oracle.com/java/technologies/downloads
在頁面下方找到:
下載<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">jdk-8u351-linux-x64.tar.gz</font>
在彈出的頁面中輸入Oracle的賬戶密碼即可下載(如無賬戶,請自行注冊,注冊是免費的)
- 登陸Linux系統,切換到root用戶
- 通過FinalShell,上傳下載好的JDK安裝包
創建文件夾,用來部署JDK,將JDK和Tomcat都安裝部署到:/export/server 內
- mkdir -p /export/server
解壓縮JDK安裝文件
- tar -zxvf jdk-8u351-linux-x64.tar.gz -C /export/server
配置JDK的軟鏈接
- ln -s /export/server/jdk1.8.0_351 /export/server/jdk
- 配置JAVA_HOME環境變量,以及將$JAVA_HOME/bin文件夾加入PATH環境變量中
# 編輯/etc/profile文件
export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin
生效環境變量
- source /etc/profile
- 配置java執行程序的軟鏈接
# 刪除系統自帶的java程序
rm -f /usr/bin/java
# 軟鏈接我們自己安裝的java程序
ln -s /export/server/jdk/bin/java /usr/bin/java
- 執行驗證:
java -version
javac -version
解壓并部署Tomcat
Tomcat建議使用非Root用戶安裝并啟動
可以創建一個用戶:tomcat用以部署
- 首先,放行tomcat需要使用的8080端口的外部訪問權限
CentOS系統默認開啟了防火墻,阻止外部網絡流量訪問系統內部
所以,如果想要Tomcat可以正常使用,需要對Tomcat默認使用的8080端口進行放行
放行有2種操作方式:
1. <font style="color:rgb(119, 119, 119);">關閉防火墻</font>
2. <font style="color:rgb(119, 119, 119);">配置防火墻規則,放行端口</font>
# 以下操作2選一即可
# 方式1:關閉防火墻
systemctl stop firewalld # 關閉防火墻
systemctl disable firewalld # 停止防火墻開機自啟# 方式2:放行8080端口的外部訪問
firewall-cmd --add-port=8080/tcp --permanent # --add-port=8080/tcp表示放行8080端口的tcp訪問,--permanent表示永久生效
firewall-cmd --reload # 重新載入防火墻規則使其生效
方便起見,建議同學們選擇方式1,直接關閉防火墻一勞永逸
防火墻的配置非常復雜,后面會視情況獨立出一集防火墻配置規則的章節。
- 以root用戶操作,創建tomcat用戶
# 使用root用戶操作
useradd tomcat
# 可選,為tomcat用戶配置密碼
passwd tomcat
- 下載Tomcat安裝包
# 使用root用戶操作
wget https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz
# 如果出現https相關錯誤,可以使用--no-check-certificate選項
wget --no-check-certificate https://dlcdn.apache.org/tomcat/tomcat-10/v10.0.27/bin/apache-tomcat-10.0.27.tar.gz
如果Linux內下載過慢,可以復制下載鏈接在Windows系統中使用迅雷等軟件加速下載然后上傳到Linux內即可
或者使用課程資料中提供的安裝包
- 解壓Tomcat安裝包
# 使用root用戶操作,否則無權限解壓到/export/server內,除非修改此文件夾權限
tar -zxvf apache-tomcat-10.0.27.tar.gz -C /export/server
- 創建Tomcat軟鏈接
# 使用root用戶操作
ln -s /export/server/apache-tomcat-10.0.27 /export/server/tomcat
- 修改tomcat安裝目錄權限
# 使用root用戶操作,同時對軟鏈接和tomcat安裝文件夾進行修改,使用通配符*進行匹配
chown -R tomcat:tomcat /export/server/*tomcat*
切換到tomcat用戶
- su - tomcat
啟動tomcat
- /export/server/tomcat/bin/startup.sh
tomcat啟動在8080端口,可以檢查是否正常啟動成功
- netstat -anp | grep 8080
- 打開瀏覽器,輸入:
http://centos:8080或http://192.168.88.130:8080
使用主機名(需配置好本地的主機名映射)或IP地址訪問Tomcat的WEB頁面
至此,Tomcat安裝配置完成。
三 Nginx安裝部署【簡單】
簡介
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。
同Tomcat一樣,Nginx可以托管用戶編寫的WEB應用程序成為可訪問的網頁服務,同時也可以作為流量代理服務器,控制流量的中轉。
Nginx在WEB開發領域,基本上也是必備組件之一了。
安裝
Nginx同樣需要配置額外的yum倉庫,才可以使用yum安裝
安裝Nginx的操作需要root身份
- 安裝yum依賴程序
# root執行
yum install -y yum-utils
- 手動添加,nginx的yum倉庫
yum程序使用的倉庫配置文件,存放在:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">/etc/yum.repo.d</font>
內。
# root執行
# 創建文件使用vim編輯
vim /etc/yum.repos.d/nginx.repo
# 填入如下內容并保存退出
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
通過如上操作,我們手動添加了nginx的yum倉庫
- 通過yum安裝最新穩定版的nginx
# root執行
yum install -y nginx
- 啟動
# nginx自動注冊了systemctl系統服務
systemctl start nginx # 啟動
systemctl stop nginx # 停止
systemctl status nginx # 運行狀態
systemctl enable nginx # 開機自啟
systemctl disable nginx # 關閉開機自啟
- 配置防火墻放行
nginx默認綁定80端口,需要關閉防火墻或放行80端口
# 方式1(推薦),關閉防火墻
systemctl stop firewalld # 關閉
systemctl disable firewalld # 關閉開機自啟# 方式2,放行80端口
firewall-cmd --add-port=80/tcp --permanent # 放行tcp規則下的80端口,永久生效
firewall-cmd --reload # 重新加載防火墻規則
- 啟動后瀏覽器輸入Linux服務器的IP地址或主機名即可訪問
http://192.168.88.130 或 http://centos
ps:80端口是訪問網站的默認端口,所以后面無需跟隨端口號
顯示的指定端口也是可以的比如:
- [<font style="color:rgb(119, 119, 119);">http://192.168.88.130:80</font>](http://192.168.88.130:80)
- [<font style="color:rgb(119, 119, 119);">http://centos:80</font>](http://centos:80)
至此,Nginx安裝配置完成。
四 RabbitMQ安裝部署【簡單】
簡介
RabbitMQ一款知名的開源消息隊列系統,為企業提供消息的發布、訂閱、點對點傳輸等消息服務。
RabbitMQ在企業開發中十分常見,課程為大家演示快速搭建RabbitMQ環境。
安裝
rabbitmq在yum倉庫中的版本比較老,所以我們需要手動構建yum倉庫
- 準備yum倉庫
# root執行
# 1. 準備gpgkey密鑰
rpm --import https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
rpm --import https://packagecloud.io/rabbitmq/erlang/gpgkey
rpm --import https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey# 2. 準備倉庫文件
vim /etc/yum.repos.d/rabbitmq.repo
# 填入如下內容
##
## Zero dependency Erlang
##[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkeyhttps://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkeyhttps://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300##
## RabbitMQ server
##[rabbitmq_server]
name=rabbitmq_server
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
# PackageCloud's repository key and RabbitMQ package signing key
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkeyhttps://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300[rabbitmq_server-source]
name=rabbitmq_server-source
baseurl=https://packagecloud.io/rabbitmq/rabbitmq-server/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
- 安裝RabbitMQ
# root執行
yum install erlang rabbitmq-server -y
Installed:erlang.x86_64 0:23.3.4.11-1.el7 rabbitmq-server.noarch 0:3.10.0-1.el7
- 啟動
# root執行
# 使用systemctl管控,服務名:rabbitmq-server
systemctl enable rabbitmq-server # 開機自啟
systemctl disable rabbitmq-server # 關閉開機自啟
systemctl start rabbitmq-server # 啟動
systemctl stop rabbitmq-server # 關閉
systemctl status rabbitmq-server # 查看狀態
- 放行防火墻,RabbitMQ使用5672、15672、25672 3個端口
# 方式1(推薦),關閉防火墻
systemctl stop firewalld # 關閉
systemctl disable firewalld # 關閉開機自啟# 方式2,放行5672 25672端口
firewall-cmd --add-port=5672/tcp --permanent # 放行tcp規則下的5672端口,永久生效
firewall-cmd --add-port=15672/tcp --permanent # 放行tcp規則下的15672端口,永久生效
firewall-cmd --add-port=25672/tcp --permanent # 放行tcp規則下的25672端口,永久生效
firewall-cmd --reload # 重新加載防火墻規則
啟動RabbitMQ的WEB管理控制臺
- rabbitmq-plugins enable rabbitmq_management
- 添加admin用戶,并賦予權限
rabbitmqctl add_user admin 'Itheima66^'
rabbitmqctl set_permissions -p "/" "admin" ".*" ".*" ".*"
rabbitmqctl set_user_tags admin administrator
- 瀏覽器打開管理控制臺
http://192.168.88.130:15672
至此,RabbitMQ已經安裝完成了。
五 Redis安裝部署【簡單】
簡介
redis是一個開源的、使用C語言編寫的、支持網絡交互的、可基于內存也可持久化的Key-Value數據庫。
redis的特點就是:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">快</font>
,可以基于內存存儲數據并提供超低延遲、超快的檢索速度
一般用于在系統中提供快速緩存的能力。
安裝
- 配置
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">EPEL</font>
倉庫
EPEL 的全稱叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社區打造,為 RHEL 及衍生發行版如 CentOS、Scientific Linux 等提供高質量軟件包的項目。裝上了 EPEL之后,就相當于添加了一個第三方源。EPEL則為服務器版本提供大量的rpm包(yum程序所使用的程序安裝包,類似Windows的exe),而且大多數rpm包在官方 repository 中是找不到的。
# root執行
yum install -y epel-release
- 安裝redis
# root執行
yum install -y redis
- 啟動redis
# root執行
# 使用systemctl管控,服務名:redis
systemctl enable redis # 開機自啟
systemctl disable redis # 關閉開機自啟
systemctl start redis # 啟動
systemctl stop redis # 關閉
systemctl status redis # 查看狀態
- 放行防火墻,redis使用端口6379
# 方式1(推薦),關閉防火墻
systemctl stop firewalld # 關閉
systemctl disable firewalld # 關閉開機自啟# 方式2,放行6379端口
firewall-cmd --add-port=6379/tcp --permanent # 放行tcp規則下的6379端口,永久生效
firewall-cmd --reload
- 進入redis服務
# 執行redis-cli
[root@centos ~]# redis-cli
127.0.0.1:6379> set mykey hello
OK
127.0.0.1:6379> get mykey
"hello"
127.0.0.1:6379>
至此,redis安裝完成。
六 ElasticSearch安裝部署
簡介
全文搜索屬于最常見的需求,開源的 Elasticsearch (以下簡稱 es)是目前全文搜索引擎的首選。
它可以快速地儲存、搜索和分析海量數據。維基百科、Stack Overflow、Github 都采用它。
Elasticsearch簡稱es,在企業內同樣是一款應用非常廣泛的搜索引擎服務。
很多服務中的搜索功能,都是基于es來實現的。
安裝
- 添加yum倉庫
# root執行
# 導入倉庫密鑰
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch# 添加yum源
# 編輯文件
vim /etc/yum.repos.d/elasticsearch.repo[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md# 更新yum緩存
yum makecache
安裝es
- yum install -y elasticsearch
- 配置es
vim /etc/elasticsearch/elasticsearch.yml# 17行,設置集群名稱
cluster.name: my-cluster# 23行,設置節點名稱
node.name: node-1# 56行,允許外網訪問
network.host: 0.0.0.0# 74行,配置集群master節點
cluster.initial_master_nodes: ["node-1"]
啟動es
- systemctl start | stop | status | enable | disable elasticsearch
- 關閉防火墻
systemctl stop firewalld
systemctl disable firewalld
- 測試
瀏覽器打開:http://ip:9200/?pretty
七 集群化環境前置準備
介紹
在前面,我們所學習安裝的軟件,都是以單機模式運行的。
后續,我們將要學習大數據相關的軟件部署,所以后續我們所安裝的軟件服務,大多數都是以集群化(多臺服務器共同工作)模式運行的。
所以,在當前小節,我們需要完成集群化環境的前置準備,包括創建多臺虛擬機,配置主機名映射,SSH免密登錄等等。
部署
配置多臺Linux虛擬機
安裝集群化軟件,首要條件就是要有多臺Linux服務器可用。
我們可以使用VMware提供的克隆功能,將我們的虛擬機額外克隆出3臺來使用。
- 首先,關機當前CentOS系統虛擬機(可以使用root用戶執行
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">init 0</font>
來快速關機) - 新建文件夾
文件夾起名為:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">虛擬機集群</font>
- 克隆
- 同樣的操作克隆出:node2和node3
- 開啟node1,修改主機名為node1,并修改固定ip為:192.168.88.131
# 修改主機名
hostnamectl set-hostname node1# 修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR="192.168.88.131"# 重啟網卡
systemctl stop network
systemctl start network
# 或者直接
systemctl restart network
- 同樣的操作啟動node2和node3,
修改node2主機名為node2,設置ip為192.168.88.132
修改node2主機名為node3,設置ip為192.168.88.133
- 配置FinalShell,配置連接到node1、node2、node3的連接
為了簡單起見,建議配置root用戶登錄
準備主機名映射
- 在Windows系統中修改hosts文件,填入如下內容:
如果同學們使用MacOS系統,請:
1. <font style="color:rgb(119, 119, 119);">sudo su -,切換到root</font>
2. <font style="color:rgb(119, 119, 119);">修改/etc/hosts文件</font>
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
- 在3臺Linux的/etc/hosts文件中,填入如下內容(3臺都要添加)
192.168.88.131 node1
192.168.88.132 node2
192.168.88.133 node3
配置SSH免密登錄
簡介
SSH服務是一種用于遠程登錄的安全認證協議。
我們通過FinalShell遠程連接到Linux,就是使用的SSH服務。
SSH服務支持:
- 通過賬戶+密碼的認證方式來做用戶認證
- 通過賬戶+秘鑰文件的方式做用戶認證
SSH可以讓我們通過SSH命令,遠程的登陸到其它的主機上,比如:
在node1執行:ssh root@node2,將以root用戶登錄node2服務器,輸入密碼即可成功登陸
或者ssh node2,將以當前用戶直接登陸到node2服務器。
SSH免密配置
后續安裝的集群化軟件,多數需要遠程登錄以及遠程執行命令,我們可以簡單起見,配置三臺Linux服務器之間的免密碼互相SSH登陸
- 在每一臺機器都執行:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">ssh-keygen -t rsa -b 4096</font>
,一路回車到底即可 - 在每一臺機器都執行:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
- 執行完畢后,node1、node2、node3之間將完成root用戶之間的免密互通
配置JDK環境
后續的大數據集群軟件,多數是需要Java運行環境的,所以我們為每一臺機器都配置JDK環境。
JDK配置參閱:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Tomcat</font>
安裝部署環節。
關閉防火墻和SELinux
集群化軟件之間需要通過端口互相通訊,為了避免出現網絡不通的問題,我們可以簡單的在集群內部關閉防火墻。
在每一臺機器都執行
systemctl stop firewalld
systemctl disable firewalld
Linux有一個安全模塊:SELinux,用以限制用戶和程序的相關權限,來確保系統的安全穩定。
SELinux的配置同防火墻一樣,非常復雜,課程中不多涉及,后續視情況可以出一章SELinux的配置課程。
在當前,我們只需要關閉SELinux功能,避免導致后面的軟件運行出現問題即可,
在每一臺機器都執行
vim /etc/sysconfig/selinux# 將第七行,SELINUX=enforcing 改為
SELINUX=disabled
# 保存退出后,重啟虛擬機即可,千萬要注意disabled單詞不要寫錯,不然無法啟動系統
添加快照
為了避免后續出現問題,在完成上述設置后,為每一臺虛擬機都制作快照,留待使用。
補充命令 - scp
后續的安裝部署操作,我們將會頻繁的在多臺服務器之間相互傳輸數據。
為了更加方面的互相傳輸,我們補充一個命令:scp
scp命令是cp命令的升級版,即:ssh cp,通過SSH協議完成文件的復制。
其主要的功能就是:在不同的Linux服務器之間,通過<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">SSH</font>
協議互相傳輸文件。
只要知曉服務器的賬戶和密碼(或密鑰),即可通過SCP互傳文件。
語法:
scp [-r] 參數1 參數2
- -r選項用于復制文件夾使用,如果復制文件夾,必須使用-r
- 參數1:本機路徑 或 遠程目標路徑
- 參數2:遠程目標路徑 或 本機路徑如:
scp -r /export/server/jdk root@node2:/export/server/
將本機上的jdk文件夾, 以root的身份復制到node2的/export/server/內
同SSH登陸一樣,賬戶名可以省略(使用本機當前的同名賬戶登陸)如:
scp -r node2:/export/server/jdk /export/server/
將遠程node2的jdk文件夾,復制到本機的/export/server/內# scp命令的高級用法
cd /export/server
scp -r jdk node2:`pwd`/ # 將本機當前路徑的jdk文件夾,復制到node2服務器的同名路徑下
scp -r jdk node2:$PWD # 將本機當前路徑的jdk文件夾,復制到node2服務器的同名路徑下
八 Zookeeper集群安裝部署
簡介
ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的軟件,提供的功能包括:配置維護、域名服務、分布式同步、組服務等。
除了為Hadoop和HBase提供協調服務外,Zookeeper也被其它許多軟件采用作為其分布式狀態一致性的依賴,比如Kafka,又或者一些軟件項目中,也經常能見到Zookeeper作為一致性協調服務存在。
Zookeeper不論是大數據領域亦或是其它服務器開發領域,涉及到分布式狀態一致性的場景,總有它的身影存在。
安裝
Zookeeper是一款分布式的集群化軟件,可以在多臺服務器上部署,并協同組成分布式集群一起工作。
- 首先,要確保已經完成了
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">集群化環境前置準備</font>
環節的全部內容 - 【node1上操作】下載Zookeeper安裝包,并解壓
# 下載
wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz# 確保如下目錄存在,不存在就創建
mkdir -p /export/server# 解壓
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz -C /export/server
【node1上操作】創建軟鏈接
- ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper
- 【node1上操作】修改配置文件
vim /export/server/zookeeper/conf/zoo.cfgtickTime=2000
# zookeeper數據存儲目錄
dataDir=/export/server/zookeeper/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888
- 【node1上操作】配置
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">myid</font>
# 1. 創建Zookeeper的數據目錄
mkdir /export/server/zookeeper/data# 2. 創建文件,并填入1
vim /export/server/zookeeper/data/myid
# 在文件內填入1即可
【在node2和node3上操作】,創建文件夾
- mkdir -p /export/server
- 【node1上操作】將Zookeeper 復制到node2和node3
cd /export/serverscp -r apache-zookeeper-3.5.9 node2:`pwd`/
scp -r apache-zookeeper-3.5.9 node3:`pwd`/
- 【在node2上操作】
# 1. 創建軟鏈接
ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper# 2. 修改myid文件
vim /export/server/zookeeper/data/myid
# 修改內容為2
- 【在node3上操作】
# 1. 創建軟鏈接
ln -s /export/server/apache-zookeeper-3.5.9 /export/server/zookeeper# 2. 修改myid文件
vim /export/server/zookeeper/data/myid
# 修改內容為3
- 【在node1、node2、node3上分別執行】啟動Zookeeper
# 啟動命令
/export/server/zookeeper/bin/zkServer.sh start # 啟動Zookeeper
- 【在node1、node2、node3上分別執行】檢查Zookeeper進程是否啟動
jps# 結果中找到有:QuorumPeerMain 進程即可
- 【node1上操作】驗證Zookeeper
/export/server/zookeeper/zkCli.sh# 進入到Zookeeper控制臺中后,執行
ls /# 如無報錯即配置成功
至此Zookeeper安裝完成
九 Kafka集群安裝部署
簡介
Kafka是一款<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">分布式的、去中心化的、高吞吐低延遲、訂閱模式</font>
的消息隊列系統。
同RabbitMQ一樣,Kafka也是消息隊列。不過RabbitMQ多用于后端系統,因其更加專注于消息的延遲和容錯。
Kafka多用于大數據體系,因其更加專注于數據的吞吐能力。
Kafka多數都是運行在分布式(集群化)模式下,所以課程將以3臺服務器,來完成Kafka集群的安裝部署。
安裝
- 確保已經跟隨前面的視頻,安裝并部署了JDK和Zookeeper服務
Kafka的運行依賴JDK環境和Zookeeper請確保已經有了JDK環境和Zookeeper
- 【在node1操作】下載并上傳Kafka的安裝包
# 下載安裝包
wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz
- 【在node1操作】解壓
mkdir -p /export/server # 此文件夾如果不存在需先創建# 解壓
tar -zxvf kafka_2.12-2.4.1.tgz -C /export/server/# 創建軟鏈接
ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafka
- 【在node1操作】修改Kafka目錄內的config目錄內的
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">server.properties</font>
文件
cd /export/server/kafka/config
vim server.properties
# 指定broker的id
broker.id=1
# 指定 kafka的綁定監聽的地址
listeners=PLAINTEXT://node1:9092
# 指定Kafka數據的位置
log.dirs=/export/server/kafka/data
# 指定Zookeeper的三個節點
zookeeper.connect=node1:2181,node2:2181,node3:2181
- 【在node1操作】將node1的kafka復制到node2和node3
cd /export/server# 復制到node2同名文件夾
scp -r kafka_2.12-2.4.1 node2:`pwd`/
# 復制到node3同名文件夾
scp -r kafka_2.12-2.4.1 node3:$PWD
- 【在node2操作】
# 創建軟鏈接
ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafkacd /export/server/kafka/config
# 指定broker的id
broker.id=2
# 指定 kafka的綁定監聽的地址
listeners=PLAINTEXT://node2:9092
# 指定Kafka數據的位置
log.dirs=/export/server/kafka/data
# 指定Zookeeper的三個節點
zookeeper.connect=node1:2181,node2:2181,node3:2181
- 【在node3操作】
# 創建軟鏈接
ln -s /export/server/kafka_2.12-2.4.1 /export/server/kafkacd /export/server/kafka/config
vim server.properties
# 指定broker的id
broker.id=3
# 指定 kafka的綁定監聽的地址
listeners=PLAINTEXT://node3:9092
# 指定Kafka數據的位置
log.dirs=/export/server/kafka/data
# 指定Zookeeper的三個節點
zookeeper.connect=node1:2181,node2:2181,node3:2181
- 啟動kafka
# 請先確保Zookeeper已經啟動了# 方式1:【前臺啟動】分別在node1、2、3上執行如下語句
/export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties# 方式2:【后臺啟動】(長期穩定執行)分別在node1、2、3上執行如下語句
nohup /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties 2>&1 >> /export/server/kafka/kafka-server.log &
- 驗證Kafka啟動
# 在每一臺服務器執行
jps
測試Kafka能否正常使用
- 創建測試主題
# 在node1執行,創建一個主題
/export/server/kafka_2.12-2.4.1/bin/kafka-topics.sh --create --zookeeper node1:2181 --replication-factor 1 --partitions 3 --topic test
- 運行測試,請在FinalShell中打開2個node1的終端頁面
# 打開一個終端頁面,啟動一個模擬的數據生產者
/export/server/kafka_2.12-2.4.1/bin/kafka-console-producer.sh --broker-list node1:9092 --topic test
# 再打開一個新的終端頁面,在啟動一個模擬的數據消費者
/export/server/kafka_2.12-2.4.1/bin/kafka-console-consumer.sh --bootstrap-server node1:9092 --topic test --from-beginning
十 大數據集群(Hadoop生態)安裝部署
簡介
1)Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。2)主要解決,海量數據的存儲和海量數據的分析計算問題。
Hadoop HDFS 提供分布式海量數據存儲能力
Hadoop YARN 提供分布式集群資源管理能力
Hadoop MapReduce 提供分布式海量數據計算能力
前置要求
- 請確保完成了集群化環境前置準備章節的內容
- 即:JDK、SSH免密、關閉防火墻、配置主機名映射等前置操作
Hadoop集群角色
Hadoop生態體系中總共會出現如下進程角色:
- Hadoop HDFS的管理角色:Namenode進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">僅需1個即可(管理者一個就夠)</font>
) - Hadoop HDFS的工作角色:Datanode進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">需要多個(工人,越多越好,一個機器啟動一個)</font>
) - Hadoop YARN的管理角色:ResourceManager進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">僅需1個即可(管理者一個就夠)</font>
) - Hadoop YARN的工作角色:NodeManager進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">需要多個(工人,越多越好,一個機器啟動一個)</font>
) - Hadoop 歷史記錄服務器角色:HistoryServer進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">僅需1個即可(功能進程無需太多1個足夠)</font>
) - Hadoop 代理服務器角色:WebProxyServer進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">僅需1個即可(功能進程無需太多1個足夠)</font>
) - Zookeeper的進程:QuorumPeerMain進程(
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">僅需1個即可(Zookeeper的工作者,越多越好)</font>
)
角色和節點分配
角色分配如下:
- node1:Namenode、Datanode、ResourceManager、NodeManager、HistoryServer、WebProxyServer、QuorumPeerMain
- node2:Datanode、NodeManager、QuorumPeerMain
- node3:Datanode、NodeManager、QuorumPeerMain
安裝
調整虛擬機內存
如上圖,可以看出node1承載了太多的壓力。同時node2和node3也同時運行了不少程序
為了確保集群的穩定,需要對虛擬機進行內存設置。
請在VMware中,對:
- node1設置4GB或以上內存
- node2和node3設置2GB或以上內存
大數據的軟件本身就是集群化(一堆服務器)一起運行的。
現在我們在一臺電腦中以多臺虛擬機來模擬集群,確實會有很大的內存壓力哦。
Zookeeper集群部署
略
Hadoop集群部署
- 下載Hadoop安裝包、解壓、配置軟鏈接
# 1. 下載
wget http://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz# 2. 解壓
# 請確保目錄/export/server存在
tar -zxvf hadoop-3.3.0.tar.gz -C /export/server/# 3. 構建軟鏈接
ln -s /export/server/hadoop-3.3.0 /export/server/hadoop
- 修改配置文件:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">hadoop-env.sh</font>
Hadoop的配置文件要修改的地方很多,請細心
cd 進入到/export/server/hadoop/etc/hadoop,文件夾中,配置文件都在這里
修改hadoop-env.sh文件
此文件是配置一些Hadoop用到的環境變量
這些是臨時變量,在Hadoop運行時有用
如果要永久生效,需要寫到/etc/profile中
# 在文件開頭加入:
# 配置Java安裝路徑
export JAVA_HOME=/export/server/jdk
# 配置Hadoop安裝路徑
export HADOOP_HOME=/export/server/hadoop
# Hadoop hdfs配置文件路徑
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# Hadoop YARN配置文件路徑
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
# Hadoop YARN 日志文件夾c
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
# Hadoop hdfs 日志文件夾
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs# Hadoop的使用啟動用戶配置
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export YARN_PROXYSERVER_USER=root
- 修改配置文件:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">core-site.xml</font>
如下,清空文件,填入如下內容
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. -->
<configuration><property><name>fs.defaultFS</name><value>hdfs://node1:8020</value><description></description></property><property><name>io.file.buffer.size</name><value>131072</value><description></description></property>
</configuration>
- 配置:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">hdfs-site.xml</font>
文件
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>dfs.datanode.data.dir.perm</name><value>700</value></property><property><name>dfs.namenode.name.dir</name><value>/data/nn</value><description>Path on the local filesystem where the NameNode stores the namespace and transactions logs persistently.</description></property><property><name>dfs.namenode.hosts</name><value>node1,node2,node3</value><description>List of permitted DataNodes.</description></property><property><name>dfs.blocksize</name><value>268435456</value><description></description></property><property><name>dfs.namenode.handler.count</name><value>100</value><description></description></property><property><name>dfs.datanode.data.dir</name><value>/data/dn</value></property>
</configuration>
- 配置:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">mapred-env.sh</font>
文件
# 在文件的開頭加入如下環境變量設置
export JAVA_HOME=/export/server/jdk
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000
export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA
- 配置:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">mapred-site.xml</font>
文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>mapreduce.framework.name</name><value>yarn</value><description></description></property><property><name>mapreduce.jobhistory.address</name><value>node1:10020</value><description></description></property><property><name>mapreduce.jobhistory.webapp.address</name><value>node1:19888</value><description></description></property><property><name>mapreduce.jobhistory.intermediate-done-dir</name><value>/data/mr-history/tmp</value><description></description></property><property><name>mapreduce.jobhistory.done-dir</name><value>/data/mr-history/done</value><description></description></property>
<property><name>yarn.app.mapreduce.am.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property><name>mapreduce.map.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
<property><name>mapreduce.reduce.env</name><value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
</property>
</configuration>
- 配置:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">yarn-env.sh</font>
文件
# 在文件的開頭加入如下環境變量設置
export JAVA_HOME=/export/server/jdk
export HADOOP_HOME=/export/server/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_LOG_DIR=$HADOOP_HOME/logs/yarn
export HADOOP_LOG_DIR=$HADOOP_HOME/logs/hdfs
- 配置:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">yarn-site.xml</font>
文件
<?xml version="1.0"?>
<!--Licensed under the Apache License, Version 2.0 (the "License");you may not use this file except in compliance with the License.You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License. See accompanying LICENSE file.
-->
<configuration><!-- Site specific YARN configuration properties -->
<property><name>yarn.log.server.url</name><value>http://node1:19888/jobhistory/logs</value><description></description>
</property><property><name>yarn.web-proxy.address</name><value>node1:8089</value><description>proxy server hostname and port</description></property><property><name>yarn.log-aggregation-enable</name><value>true</value><description>Configuration to enable or disable log aggregation</description></property><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value><description>Configuration to enable or disable log aggregation</description></property><!-- Site specific YARN configuration properties --><property><name>yarn.resourcemanager.hostname</name><value>node1</value><description></description></property><property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value><description></description></property><property><name>yarn.nodemanager.local-dirs</name><value>/data/nm-local</value><description>Comma-separated list of paths on the local filesystem where intermediate data is written.</description></property><property><name>yarn.nodemanager.log-dirs</name><value>/data/nm-log</value><description>Comma-separated list of paths on the local filesystem where logs are written.</description></property><property><name>yarn.nodemanager.log.retain-seconds</name><value>10800</value><description>Default time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled.</description></property><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value><description>Shuffle service that needs to be set for Map Reduce applications.</description></property>
</configuration>
- 修改
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">workers</font>
文件
# 全部內容如下
node1
node2
node3
- 分發hadoop到其它機器
# 在node1執行
cd /export/serverscp -r hadoop-3.3.0 node2:`pwd`/
scp -r hadoop-3.3.0 node3:`pwd`/
- 在node2、node3執行
# 創建軟鏈接
ln -s /export/server/hadoop-3.3.0 /export/server/hadoop
- 創建所需目錄
在<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">/export/server</font>
目錄下創建
- <font style="color:rgb(51, 51, 51);">在node1執行:</font>
mkdir -p /data/nn
mkdir -p /data/dn
mkdir -p /data/nm-log
mkdir -p /data/nm-local
- <font style="color:rgb(51, 51, 51);">在node2執行:</font>
mkdir -p /data/dn
mkdir -p /data/nm-log
mkdir -p /data/nm-local
- <font style="color:rgb(51, 51, 51);">在node3執行:</font>
mkdir -p /data/dn
mkdir -p /data/nm-log
mkdir -p /data/nm-local
- 配置環境變量
在node1、node2、node3修改/etc/profile
export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
執行<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">source /etc/profile</font>
生效
格式化NameNode,在node1執行
- hadoop namenode -format
hadoop這個命令來自于:$HADOOP_HOME/bin中的程序
由于配置了環境變量PATH,所以可以在任意位置執行hadoop命令哦
- 啟動hadoop的hdfs集群,在node1執行即可
start-dfs.sh# 如需停止可以執行
stop-dfs.sh
start-dfs.sh這個命令來自于:$HADOOP_HOME/sbin中的程序
由于配置了環境變量PATH,所以可以在任意位置執行start-dfs.sh命令哦
- 啟動hadoop的yarn集群,在node1執行即可
start-yarn.sh# 如需停止可以執行
stop-yarn.sh
- 啟動歷史服務器
mapred --daemon start historyserver# 如需停止將start更換為stop
驗證:在瀏覽器打開<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">192.168.200.132:9870</font>
,<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">192.168.200.132:8080</font>
- 啟動web代理服務器
yarn-daemon.sh start proxyserver# 如需停止將start更換為stop
驗證Hadoop集群運行情況
- 在node1、node2、node3上通過jps驗證進程是否都啟動成功
- 驗證HDFS,瀏覽器打開:http://node1:9870
創建文件test.txt,隨意填入內容,并執行:
hadoop fs -put test.txt /test.txt
# /test.txt 這個/是指hadoop的根目錄hadoop fs -cat /test.txt
- 驗證YARN,瀏覽器打開:http://node1:8088
執行:
# 創建文件words.txt,填入如下內容
itheima itcast hadoop
itheima hadoop hadoop
itheima itcast# 將文件上傳到HDFS中
hadoop fs -put words.txt /words.txt# 執行如下命令驗證YARN是否正常
hadoop jar /export/server/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar wordcount -Dmapred.job.queue.name=root.root /words.txt /output
十一 大數據NoSQL數據庫HBase集群部署
簡介
HBase 是一種分布式、可擴展、支持海量數據存儲的 NoSQL 數據庫。
和Redis一樣,HBase是一款KeyValue型存儲的數據庫。
不過和Redis設計方向不同
- Redis設計為少量數據,超快檢索
- HBase設計為海量數據,快速檢索
HBase在大數據領域應用十分廣泛,現在我們來在node1、node2、node3上部署HBase集群。
安裝
- HBase依賴Zookeeper、JDK、Hadoop(HDFS),請確保已經完成前面
- 集群化軟件前置準備(JDK)
- Zookeeper
- Hadoop
- 這些環節的軟件安裝
- 【node1執行】下載HBase安裝包
# 下載
wget http://archive.apache.org/dist/hbase/2.1.0/hbase-2.1.0-bin.tar.gz# 解壓
tar -zxvf hbase-2.1.0-bin.tar.gz -C /export/server# 配置軟鏈接
ln -s /export/server/hbase-2.1.0 /export/server/hbase
- 【node1執行】,修改配置文件,修改
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">conf/hbase-env.sh</font>
文件
# 在28行配置JAVA_HOME
export JAVA_HOME=/export/server/jdk
# 在126行配置:
# 意思表示,不使用HBase自帶的Zookeeper,而是用獨立Zookeeper
export HBASE_MANAGES_ZK=false
# 在任意行,比如26行,添加如下內容:
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
- 【node1執行】,修改配置文件,修改
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">conf/hbase-site.xml</font>
文件
# 將文件的全部內容替換成如下內容:
<configuration><!-- HBase數據在HDFS中的存放的路徑 --><property><name>hbase.rootdir</name><value>hdfs://node1:8020/hbase</value></property><!-- Hbase的運行模式。false是單機模式,true是分布式模式。若為false,Hbase和Zookeeper會運行在同一個JVM里面 --><property><name>hbase.cluster.distributed</name><value>true</value></property><!-- ZooKeeper的地址 --><property><name>hbase.zookeeper.quorum</name><value>node1,node2,node3</value></property><!-- ZooKeeper快照的存儲位置 --><property><name>hbase.zookeeper.property.dataDir</name><value>/export/server/apache-zookeeper-3.6.0-bin/data</value></property><!-- V2.1版本,在分布式情況下, 設置為false --><property><name>hbase.unsafe.stream.capability.enforce</name><value>false</value></property>
</configuration>
- 【node1執行】,修改配置文件,修改
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">conf/regionservers</font>
文件
# 填入如下內容
node1
node2
node3
- 【node1執行】,分發hbase到其它機器
scp -r /export/server/hbase-2.1.0 node2:/export/server/
scp -r /export/server/hbase-2.1.0 node3:/export/server/
【在node2、node3執行】,配置軟鏈接
- ln -s /export/server/hbase-2.1.0 /export/server/hbase
- 【node1、node2、node3執行】,配置環境變量
# 配置在/etc/profile內,追加如下兩行
export HBASE_HOME=/export/server/hbase
export PATH=$HBASE_HOME/bin:$PATHsource /etc/profile
- 【node1執行】啟動HBase
請確保:Hadoop HDFS、Zookeeper是已經啟動了的
start-hbase.sh# 如需停止可使用
stop-hbase.sh
由于我們配置了環境變量export PATH= P A T H : PATH: PATH:HBASE_HOME/bin
start-hbase.sh即在$HBASE_HOME/bin內,所以可以無論當前目錄在哪,均可直接執行
- 驗證HBase
瀏覽器打開:http://node1:16010,即可看到HBase的WEB UI頁面
- 簡單測試使用HBase
【node1執行】
hbase shell# 創建表
create 'test', 'cf'# 插入數據
put 'test', 'rk001', 'cf:info', 'itheima'# 查詢數據
get 'test', 'rk001'# 掃描表數據
scan 'test'
十二 分布式內存計算Spark環境部署
注意
本小節的操作,基于:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">大數據集群(Hadoop生態)安裝部署</font>
環節中所構建的Hadoop集群
如果沒有Hadoop集群,請參閱前置內容,部署好環境。
簡介
Spark是一款分布式內存計算引擎,可以支撐海量數據的分布式計算。
Spark在大數據體系是明星產品,作為最新一代的綜合計算引擎,支持離線計算和實時計算。
在大數據領域廣泛應用,是目前世界上使用最多的大數據分布式計算引擎。
我們將基于前面構建的Hadoop集群,部署Spark Standalone集群。
安裝
- 【node1執行】下載并解壓
wget https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz# 解壓
tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /export/server/# 軟鏈接
ln -s /export/server/spark-2.4.5-bin-hadoop2.7 /export/server/spark
- 【node1執行】修改配置文件名稱
# 改名
cd /export/server/spark/conf
mv spark-env.sh.template spark-env.sh
mv slaves.template slaves
- 【node1執行】修改配置文件,
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">spark-env.sh</font>
## 設置JAVA安裝目錄
JAVA_HOME=/export/server/jdk## HADOOP軟件配置文件目錄,讀取HDFS上文件和運行YARN集群
HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
YARN_CONF_DIR=/export/server/hadoop/etc/hadoop## 指定spark老大Master的IP和提交任務的通信端口
export SPARK_MASTER_HOST=node1
export SPARK_MASTER_PORT=7077SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=1
SPARK_WORKER_MEMORY=1g
- 【node1執行】修改配置文件,
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">slaves</font>
node1
node2
node3
- 【node1執行】在
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">/export/server</font>
分發
scp -r spark-2.4.5-bin-hadoop2.7 node2:$PWD
scp -r spark-2.4.5-bin-hadoop2.7 node3:$PWD
【node2、node3執行】設置軟鏈接
- ln -s /export/server/spark-2.4.5-bin-hadoop2.7 /export/server/spark
- 【node1執行】啟動Spark集群
/export/server/spark/sbin/start-all.sh# 如需停止,可以
/export/server/spark/sbin/stop-all.sh
- 打開Spark監控頁面,瀏覽器打開:http://node1:8081
- 【node1執行】提交測試任務
/export/server/spark/bin/spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi /export/server/spark/examples/jars/spark-examples_2.11-2.4.5.jar
十三 分布式內存計算Flink環境部署
注意
本小節的操作,基于:<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">大數據集群(Hadoop生態)安裝部署</font>
環節中所構建的Hadoop集群
如果沒有Hadoop集群,請參閱前置內容,部署好環境。
簡介
Flink同Spark一樣,是一款分布式內存計算引擎,可以支撐海量數據的分布式計算。
Flink在大數據體系同樣是明星產品,作為最新一代的綜合計算引擎,支持離線計算和實時計算。
在大數據領域廣泛應用,是目前世界上除去Spark以外,應用最為廣泛的分布式計算引擎。
我們將基于前面構建的Hadoop集群,部署Flink Standalone集群
Spark更加偏向于離線計算而Flink更加偏向于實時計算。
安裝
- 【node1操作】下載安裝包
wget https://archive.apache.org/dist/flink/flink-1.10.0/flink-1.10.0-bin-scala_2.11.tgz# 解壓
tar -zxvf flink-1.10.0-bin-scala_2.11.tgz -C /export/server/# 軟鏈接
ln -s /export/server/flink-1.10.0 /export/server/flink
- 【node1操作】修改配置文件,
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">conf/flink-conf.yaml</font>
# jobManager 的IP地址
jobmanager.rpc.address: node1
# JobManager 的端口號
jobmanager.rpc.port: 6123
# JobManager JVM heap 內存大小
jobmanager.heap.size: 1024m
# TaskManager JVM heap 內存大小
taskmanager.heap.size: 1024m
# 每個 TaskManager 提供的任務 slots 數量大小
taskmanager.numberOfTaskSlots: 2
#是否進行預分配內存,默認不進行預分配,這樣在我們不使用flink集群時候不會占用集群資源
taskmanager.memory.preallocate: false
# 程序默認并行計算的個數
parallelism.default: 1
#JobManager的Web界面的端口(默認:8081)
jobmanager.web.port: 8081
- 【node1操作】,修改配置文件,
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">conf/slaves</font>
node1
node2
node3
- 【node1操作】分發Flink安裝包到其它機器
cd /export/server
scp -r flink-1.10.0 node2:`pwd`/
scp -r flink-1.10.0 node3:`pwd`/
- 【node2、node3操作】
# 配置軟鏈接
ln -s /export/server/flink-1.10.0 /export/server/flink
【node1操作】,啟動Flink
- /export/server/flink/bin/start-cluster.sh
- 驗證Flink啟動
# 瀏覽器打開
http://node1:8081
- 提交測試任務
【node1執行】計數單詞
/export/server/flink/bin/flink run /export/server/flink-1.10.0/examples/batch/WordCount.jar
十四 運維監控Zabbix部署
簡介
Zabbix 由 Alexei Vladishev 創建,目前由其成立的公司—— Zabbix SIA 積極的持續開發更新維護, 并為用戶提供技術支持服務。
Zabbix 是一個企業級分布式開源監控解決方案。
Zabbix 軟件能夠監控眾多網絡參數和服務器的健康度、完整性。Zabbix 使用靈活的告警機制,允許用戶為幾乎任何事件配置基于郵件的告警。這樣用戶可以快速響應服務器問題。Zabbix 基于存儲的數據提供出色的報表和數據可視化功能。這些功能使得 Zabbix 成為容量規劃的理想選擇。
安裝
安裝整體步驟:
- 準備Linux 服務器(虛擬機)
- 安裝Mysql
- 安裝zabbix( 包含 server agent web)
- 配置 mysql, 為zabbix創建表結構
- 配置zabbix server
- 啟動并開啟開機自啟動
安裝前準備 - Mysql
安裝ZabbixServer需要先安裝好<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Mysql</font>
數據庫
課程使用<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Mysql 5.7</font>
安裝步驟:
# 安裝Mysql yum庫
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm# yum安裝Mysql
yum -y install mysql-community-server# 啟動Mysql設置開機啟動
systemctl start mysqld
systemctl enable mysqld# 檢查Mysql服務狀態
systemctl status mysqld# 第一次啟動mysql,會在日志文件中生成root用戶的一個隨機密碼,使用下面命令查看該密碼
grep 'temporary password' /var/log/mysqld.log# 修改root用戶密碼
mysql -u root -p -h localhost
Enter password:mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root!@#$';# 如果你想設置簡單密碼,需要降低Mysql的密碼安全級別
set global validate_password_policy=LOW; # 密碼安全級別低
set global validate_password_length=4; # 密碼長度最低4位即可# 然后就可以用簡單密碼了(課程中使用簡單密碼,為了方便,生產中不要這樣)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
mysql> grant all privileges on *.* to root@'%' identified by 'root';
安裝Zabbix Server 和 Zabbix Agent
初始安裝,我們先安裝ZabbixServer以及在Server本機安裝Agent。
打開官網下載頁面:https://www.zabbix.com/download?zabbix=4.0&os_distribution=centos&os_version=7&db=mysql
選擇對應的版本,然后再下面官網給出了具體的安裝命令,使用<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">rpm</font>
和<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">yum</font>
來進行安裝。
需要有網絡。
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">以下內容來自官方頁面</font>
a. 安裝Zabbix yum庫
documentation
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
yum clean all
b. 安裝Zabbix Server、前端、Agent
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 如果只需要安裝Agent的話
yum -y install zabbix-agent
c. 初始化Mysql數據庫
documentation
在Mysql中操作
zabbix用戶密碼是Zabbix1234!
# 登錄Mysql 數據庫
mysql -uroot -pYourPassword
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'Zabbix1234!';
# 或者: grant all privileges on zabbix.* to zabbix@'%' identified by 'Zabbix1234!';
mysql> quit;
測試在Zabbix Server服務器上能否遠程登錄Mysql,如果可以登錄繼續向下走。
Import initial schema and data. You will be prompted to enter your newly created password.
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p Zabbix1234!
d. 為Zabbix Server配置數據庫
Edit file /etc/zabbix/zabbix_server.conf
DBPassword=Zabbix1234!
DBPassword=passwordDBHost=mysql-host-ip-or-hostname
e. 配置Zabbix的PHP前端
Edit file <font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">/etc/httpd/conf.d/zabbix.conf</font>
, uncomment and set the right timezone for you.<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);"># php_value date.timezone Asia/Shanghai</font>
Start Zabbix server and agent processes and make it start at system boot:
systemctl restart zabbix-server zabbix-agent httpd # 啟動、重啟
systemctl enable zabbix-server zabbix-agent httpd # 開機自啟
Now your Zabbix server is up and running!
配置zabbix 前端(WEB UI)
打開:**<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">http://192.168.88.131/zabbix</font>**
即可進入Zabbix頁面,在首次打開的時候,會進入設置頁面,如圖:
點擊下一步,會檢查相應的設置是否都正常
如果一切正常,點擊下一步。
配置DB連接
按具體情況填寫即可
配置Server細節
具體配置即可,Name表示這個Zabbix服務的名字,這里起名叫<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">ITHEIMA-TEST</font>
安裝前總結預覽
檢查確認沒有問題就下一步
配置完成
初始管理員賬戶Admin密碼zabbix
輸入賬戶密碼后,就能進入zabbix頁面了。
如下圖:
現在是一個嶄新的zabbix等待我們去探索。
十五 運維監控Grafana部署
簡介
安裝
部署形式
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
支持兩種部署形式
- 自行部署, 可以部署在操作系統之上. 自行提供服務器, 域名等.
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
官方托管. 無需安裝, 在線注冊即可得到一個專屬于自己的<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
, 但是要花錢的. 是一種<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">SaaS</font>
服務
我們課程選擇方式1
安裝
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
支持常見的絕大多數操作系統, 如<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">windows</font>``<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">mac</font>``<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">linux</font>
同時也支持部署在<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">docker</font>
中.
大多數情況下, <font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
都是部署在<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">linux</font>
服務器之上. 所以本課程也是基于<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Linux</font>
系統來講解.
對<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">windows</font>``<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">mac</font>
系統 或 <font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">docker</font>
部署有興趣的同學, 請參考: https://grafana.com/grafana/download
我們部署<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
可以使用<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">YUM</font>
來進行部署.
# 創建一個文件
vim /etc/yum.repos.d/grafana.repo# 將下面的內容復制進去
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt# 最后安裝
yum install grafana
配置說明
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">grafana-server</font>
具有許多配置選項,這些選項可以在<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">.ini</font>
配置文件中指定,也可以使用環境變量指定。
Note.<font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">Grafana</font>
needs to be restarted for any configuration changes to take effect.
配置文件注釋
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">;</font>
符號在<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">.ini</font>
文件中全局表示注釋 ()
配置文件路徑
如果是自己解壓安裝, 或者自行編譯的方式安裝, 配置文件在:
- 默認:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">$WORKING_DIR/conf/defaults.ini</font>
- 自定義:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">$WORKING_DIR/conf/custom.ini</font>
- 自定義配置文件路徑可以被參數
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">--config</font>
覆蓋
對于<font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">YUM</font>``<font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">RPM</font>
安裝的方式, 配置文件在: <font style="color:rgb(119, 119, 119);background-color:rgb(243, 244, 244);">/etc/grafana/grafana.ini</font>
使用環境變量
可以使用以下語法使用環境變量來覆蓋配置文件中的所有選項:
GF__
其中<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">SectionName</font>
是方括號內的文本。一切都應為大寫,<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">.</font>
應替換為<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">_</font>
例如,給定以下配置設置:
# default section
instance_name = ${HOSTNAME}[security]
admin_user = admin[auth.google]
client_secret = 0ldS3cretKey
Then you can override them using:
export GF_DEFAULT_INSTANCE_NAME=my-instance
export GF_SECURITY_ADMIN_USER=true # GF_ 固定 SECURITY 是SectionName ADMIN_USER 是配置的key 轉大寫 . 轉 _
export GF_AUTH_GOOGLE_CLIENT_SECRET=newS3cretKey
開始配置
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
支持使用<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Sqlite3</font>``<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Postgresql</font>``<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Mysql</font>
這三種數據庫作為其<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">元數據</font>
的存儲.
我們課程使用<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Mysql</font>
. 和<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">zabbix</font>
的元數據mysql共用一個實例
只需要配置如下內容即可:
并登陸mysql, 執行:
<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">create database grafana CHARACTER SET utf8 COLLATE utf8_general_ci;</font>
創建<font style="color:rgb(51, 51, 51);background-color:rgb(243, 244, 244);">Grafana</font>
使用的數據庫作為元數據存儲.
啟動
systemctl daemon-reload
systemctl start grafana-server
systemctl enable grafana-server
瀏覽器打開:http://node1:3000
默認賬戶密碼:admin/admin