安裝Ubuntu Linux元信息 兩台機器,每台機器兩台Ubuntu Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso 處理器數量2,每個處理器的核心數量2,總處理器核心數量4 單個虛擬機記憶體8192MB(8G),最大磁碟大小30G 參考鏈接 清華大學開源軟體鏡像 ...
安裝Ubuntu
Linux元信息
- 兩台機器,每台機器兩台Ubuntu
- Ubuntu版本:ubuntu-22.04.3-desktop-amd64.iso
- 處理器數量2,每個處理器的核心數量2,總處理器核心數量4
- 單個虛擬機記憶體8192MB(8G),最大磁碟大小30G
參考鏈接
-
清華大學開源軟體鏡像站
-
虛擬機(VMware)安裝Linux(Ubuntu)安裝教程
具體步驟
-
把下載好的iso文件保存到一個位置
-
開始在VMware安裝Ubuntu
-
選擇網路類型(圖片錯了,應該是“橋接網路”,詳見“配置虛擬機網路”)
-
指定磁碟容量
-
設置鏡像文件
-
開始安裝Ubuntu
配置虛擬機網路
配置橋接模式
-
查看宿主機WLAN硬體配置信息
-
打開VMware中的虛擬網路編輯器,根據宿主機WLAN硬體配置如下信息
設置虛擬機靜態IP
防止每次開機隨機IP,導致無法連接到其他虛擬機
-
切換root用戶(第一次切換root用戶需要配置root密碼)
sudo passwd
-
打開01-network-manager-all.yaml文件(網卡配置文件)
vim /etc/netplan/01-network-manager-all.yaml
-
刪除原內容,複製粘貼如下信息(根據實際情況更改)
# Let NetworkManager manage all devices on this system network: ethernets: ens33: dhcp4: false addresses: [192.168.139.101/24] routes: - to: default via: 192.168.139.92 nameservers: addresses: [8.8.8.8] version: 2
-
在宿主機的cmd中運行ipconfig命令查看網路信息,如下圖所示:
-
根據第四步更改第三步的部分信息
- via:宿主機的預設網關
- addresses:前三位和宿主機預設網關保持一致,後一位自己隨便設置(但要避免和已有ip重覆)
安裝Hadoop
Hadoop元信息
-
統一用戶名:hjm,密碼:000000
-
四台虛擬機分別為gyt1,gyt2,hjm1,hjm2
-
四台虛擬機用橋接模式,連接一臺手機的熱點,虛擬機ip如下:
hjm1:192.168.139.101
hjm2:192.168.139.102
gyt1:192.168.139.103
gyt2:192.168.139.104
-
集群部署規劃
hjm1 hjm2 gyt1 gyt2 HDFS NameNode、DataNode DataNode SecondaryNameNode、DataNode DataNode YARN NodeManager NodeManager NodeManager ResourceManager、NodeManager
配置用戶sudo許可權
配置以後,每次使用sudo,無需輸入密碼
-
用sudo許可權打開sudoers文件
sudo vim /etc/sudoers
-
增加修改sudoers文件,在%sudo下麵新加一行(這裡以hjm用戶為例)
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL hjm ALL=(ALL) NOPASSWD: ALL
創建目錄並更改許可權
-
創建module和software文件夾
sudo mkdir /opt/module sudo mkdir /opt/software
-
修改 module、software 文件夾的所有者和所屬組均為hjm用戶
sudo chown hjm:hjm /opt/module sudo chown hjm:hjm /opt/software
Ubuntu查看、安裝和開啟ssh服務
-
查看ssh服務的開啟狀態,如果開啟,則可以跳過這一部分
ps -e|grep ssh
-
安裝ssh服務
sudo apt-get install openssh-server
-
啟動ssh服務
sudo /etc/init.d/ssh start
註意:
當你用ssh軟體(這裡預設是Xhell 7)連接時,不要用root用戶連,ssh預設 不能用root直接連,除非修改配置文件
安裝JDK
-
用xftp工具將jdk導入到opt目錄下麵的software文件夾下麵
-
解壓jdk到opt/module目錄下
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/
-
配置jdk環境變數
(1)新建/etc/profile.d/my_env.sh 文件
sudo vim /etc/profile.d/my_env.sh
(2)添加以下內容
#JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_212 export PATH=$PATH:$JAVA_HOME/bin
(3)保存後退出,source 一下/etc/profile 文件,讓新的環境變數 PATH 生效
source /etc/profile
(4)測試jdk是否安裝成功
java -version
安裝Hadoop
-
用xftp工具將hadoop導入到opt目錄下麵的software文件夾下麵
-
解壓hadoop到opt/module目錄下
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
-
配置hadoop環境變數
(1)打開/etc/profile.d/my_env.sh 文件
sudo vim /etc/profile.d/my_env.sh
(2)在 my_env.sh 文件末尾添加如下內容
#HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin
(3)保存後退出,source 一下/etc/profile 文件,讓新的環境變數 PATH 生效
source /etc/profile
(4)測試hadoop是否安裝成功
hadoop version
修改配置文件
cd到$HADOOP_HOME/etc/hadoop目錄
core-site.xml
<configuration>
<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hjm1:8020</value>
</property>
<!-- 指定 hadoop 數據的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.1.3/data</value>
</property>
<!-- 配置 HDFS 網頁登錄使用的靜態用戶為 hjm -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>hjm</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<!-- nn web 端訪問地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hjm1:9870</value>
</property>
<!-- 2nn web 端訪問地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>gyt1:9868</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>gyt2</value>
</property>
<!-- 環境變數的繼承 -->
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
</property>
</configuration>
mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程式運行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
workers
hjm1
hjm2
gyt1
gyt2
克隆虛擬機
-
在hjm1和gyt1的兩台宿主機上分別克隆出hjm2和gyt2
-
按照“配置虛擬機網路-設置虛擬機靜態IP”的方式,配置hjm2的ip為192.168.139.102,gyt2的ip為192.168.139.104
-
改每台虛擬機的ubuntu映射文件,這裡以gyt2為例
127.0.0.1 localhost # 127.0.1.1 gyt2 記得刪除這一行 192.168.139.101 hjm1 192.168.139.102 hjm2 192.168.139.103 gyt1 192.168.139.104 gyt2
-
修改四台虛擬機的主機名分別為hjm1,hjm2,gyty1,gyt2
sudo vim /etc/hostname
-
重啟虛擬機
ssh免密登錄
- 分別要配置16種免密登錄,如下圖所示
-
切換hjm用戶,cd到~/.ssh,生成公鑰和私鑰
ssh-keygen -t rsa
-
將公鑰複製到目的機上,這裡以hjm1舉例
ssh-copy-id hjm1
xsync集群分發腳本
-
在/home/hjm/bin目錄下創建xsync文件
-
在該文件中編寫如下代碼
#!/bin/bash #1. 判斷參數個數 if [ $# -lt 1 ] then echo Not Enough Arguement! exit; fi #2. 遍歷集群所有機器 for host in hadoop102 hadoop103 hadoop104 do echo ==================== $host ==================== #3. 遍歷所有目錄,挨個發送 for file in $@ do #4. 判斷文件是否存在 if [ -e $file ] then #5. 獲取父目錄 pdir=$(cd -P $(dirname $file); pwd) #6. 獲取當前文件的名稱 fname=$(basename $file) ssh $host "mkdir -p $pdir" rsync -av $pdir/$fname $host:$pdir else echo $file does not exists! fi done done
-
修改腳本xsync具有執行許可權
chmod +x xsync
-
測試腳本
xsync /home/atguigu/bin
-
將腳本複製到/bin中,以便全局調用
sudo cp xsync /bin/
-
在客戶端電腦(預設windows)配置映射
(1)windows + R
(2)輸入drivers,回車
(3)進入etc文件夾
(4)編輯hosts文件
192.168.139.101 hjm1 192.168.139.102 hjm2 192.168.139.103 gyt1 192.168.139.104 gyt2
測試hadoop
-
格式化NameNode
如果集群是第一次啟動,需要在 hadoop102 節點格式化 NameNode(註意:格式化 NameNode,會產生新的集群 id,導致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往數據。如果集群在運行過程中報錯,需要重新格式化 NameNode 的話,一定要先停止 namenode 和 datanode 進程,並且要刪除所有機器的 data 和 logs 目錄,然後再進行格式化。)
hdfs namenode -format
-
在hjm1上啟動hdfs
sbin/start-dfs.sh
-
在gyt2上啟動yarn
sbin/start-yarn.sh
-
Web 端查看 HDFS 的 NameNode
-
Web 端查看 YARN 的 ResourceManager
-
測試結果
(1)datanode
(2)Yarn
(3)WordCount