準備三臺客戶機
模板虛擬機器準備
安裝模板虛擬機器
- ip地址192.168.10.100
- 主機名稱hadoop100
- 記憶體4g
- 硬碟50g
配置
-
測試網路
ping www.baidu.com
-
安裝epel-release
yum install -y epel-release
-
安裝net-tools
yum install -y net-tools
-
安裝vim
yum install -y vim
關閉防火牆
systemctl stop firewalld
systemctl disable firewalld.service
解除安裝虛擬機器自帶的JDK
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
克隆虛擬機器
利用hadoop100,克隆出hadoop102、hadoop103、hadoop104
修改克隆機ip
-
修改靜態ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DEVICE=ens33 TYPE=Ethernet ONBOOT=yes BOOTPROTO=static NAME="ens33" IPADDR=192.168.10.102 PREFIX=24 GATEWAY=192.168.10.2 DNS1=192.168.10.2
-
檢視 Linux 虛擬機器的虛擬網路編輯器,編輯->虛擬網路編輯器->VMnet8
-
檢視 Windows 系統介面卡 VMware Network Adapter VMnet8 的 IP 地址
-
保證 Linux 系統 ifcfg-ens33 檔案中 IP 地址、虛擬網路編輯器地址和 Windows 系統 VM8 網路 IP 地址相同。
修改克隆機主機名
-
修改主機名稱
vim /etc/hostname
hadoop102
-
配置 Linux 克隆機主機名稱對映 hosts 檔案,開啟/etc/hosts
vim /etc/hosts
192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104 192.168.10.105 hadoop105 192.168.10.106 hadoop106 192.168.10.107 hadoop107 192.168.10.108 hadoop108
-
修改 windows 的主機對映檔案(hosts 檔案)
-
進入 C:\Windows\System32\drivers\etc 路徑
-
開啟 hosts 檔案並新增如下內容,然後儲存
192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104 192.168.10.105 hadoop105 192.168.10.106 hadoop106 192.168.10.107 hadoop107 192.168.10.108 hadoop108
-
安裝JDK和Hadoop
3.x版本的hadoop不支援jdk11,這裡我們使用jdk8
-
用 xftp 傳輸工具將 JDK,hadoop匯入到 opt 目錄下面的 software 資料夾下面
-
將事先在/opt/software 下的jdk,hadoop解壓到指位置
tar -zxvf jdk-8u291-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
配置環境變數
-
新建/etc/profile.d/my_env.sh 檔案
vim /etc/profile.d/my_env.sh
-
#JAVA_HOME export JAVA_HOME=/opt/module/jdk8 export PATH=$PATH:$JAVA_HOME/bin #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.1.3 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin #root使用者使用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"
-
source /etc/profile
-
檢測
java -version hadoop version
配置叢集
編寫叢集分發指令碼xsync
-
scp(secure copy)安全拷貝
scp -r $pdir/$fname $user@$host:$pdir/$fname
-
rsync 遠端同步工具
rsync -av $pdir/$fname $user@$host:$pdir/$fname
-
xsync叢集分發指令碼
-
在/root/bin/下建立指令碼
vim 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
-
修改許可權
chmod +x xsync
-
ssh無密登入
-
生成公鑰和私鑰
pwd /root/.ssh/
ssh-keygen -t rsa
-
將公鑰拷貝到要免密登入的目標機器上
ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop104
-
其它機器同理配置一遍
配置檔案
-
配置 core-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 指定 NameNode 的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop102:8020</value> </property> <!-- 指定 hadoop 資料的儲存目錄 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-3.1.3/data</value> </property> <!-- 配置 HDFS 網頁登入使用的靜態使用者為 atguigu --> <property> <name>hadoop.http.staticuser.user</name> <value>atguigu</value> </property> </configuration>
-
配置 hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- nn web 端訪問地址--> <property> <name>dfs.namenode.http-address</name> <value>hadoop102:9870</value> </property> <!-- 2nn web 端訪問地址--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop104:9868</value> </property> </configuration>
-
配置 yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 指定 MR 走 shuffle --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定 ResourceManager 的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop103</value> </property> <!-- 環境變數的繼承 --> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR, CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value> </property> </configuration>
-
配置 mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 指定 MapReduce 程式執行在 Yarn 上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
分發叢集配置檔案
xsync /opt/module/hadoop-3.1.3/etc/hadoop
群起叢集
配置workers
vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
同步配置檔案
xsync /opt/module/hadoop-3.1.3/etc
啟動叢集
-
如果第一次啟動需要在102節點格式化NameNode
若叢集崩潰應先刪除每臺機器的./data、./logs
hdfs namenode -format
-
啟動 HDFS
start-dfs.sh
-
在配置了 ResourceManager的節點(hadoop103)啟動 YARN
start-yarn.sh
-
Web 端檢視 HDFS 的 NameNode
-
瀏覽器中輸入:http://hadoop102:9870
-
檢視 HDFS 上儲存的資料資訊
-
-
Web 端檢視 YARN 的 ResourceManager
- 瀏覽器中輸入:http://hadoop103:8088
- 檢視 YARN 上執行的 Job 資訊
配置歷史伺服器
-
配置 mapred-site.xml
<!-- 歷史伺服器端地址 --> <property> <name>mapreduce.jobhistory.address</name> <value>hadoop102:10020</value> </property> <!-- 歷史伺服器 web 端地址 --> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop102:19888</value> </property>
-
分發配置
xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
-
在 hadoop102啟動歷史伺服器
mapred --daemon start historyserver
-
檢視JobHistory http://hadoop102:19888/jobhistory
配置日誌的聚集
-
配置yarn-site.xml
vim yarn-site.xml
<!-- 開啟日誌聚集功能 --> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <!-- 設定日誌聚集伺服器地址 --> <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property> <!-- 設定日誌保留時間為 7 天 --> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property>
-
分發配置
-
重啟NodeManager、ResourceManager 和 HistoryServer