hadoop3.3.0集群搭建(詳細教程)


hadoop3.3.0 集群搭建詳細教程

在這里插入圖片描述
先准備好:
hadoop3.3.0
secureCRT提取碼:u3cd
jdk官網
centos7

一、模板機

1、虛擬機的網絡適配器選擇NAT
在這里插入圖片描述
2、關閉centos的防火牆

systemctl stop firewalld
systemctl disable firewalld.service

3、將centos設置為自動連接網絡
在設置中,找到網絡,把有線設置為自動連接
在這里插入圖片描述
在這里插入圖片描述
4、讓普通(andy)用戶具有root權限

sudo vim /etc/sudoers 

sudoers文件中找到##Allow people in group wheel to run all commands,並添加andy ALL=(ALL) NOPASSWD:ALL

在這里插入圖片描述
注:andy是我的用戶名
如果你沒有創建用戶,可以使用以下命令:
創建用戶useradd 用戶名
創建密碼passwd 用戶名
補充:vim 知識
在這里插入圖片描述

5、設置靜態ip、主機名和映射host
(1)設置靜態ip
先查看IP地址,在終端中輸入ifconfig
在這里插入圖片描述
IP:192.168.23.10
我們將該ip設為靜態的,下次開機ip就不會變了。(如果你想把這個IP地址改變,只需改變它的主機號網絡號不需要改變,最后重啟 reboot
命令:

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

在這里插入圖片描述
BOOTPROTO改為static
添加:
IPADDR=192.168.23.10
GATEWAY=192.168.23.2
DNS1=192.168.23.2
(2)設置主機名

sudo vim /etc/hostname

把里面的內容改成自己的主機名Hadoop01
在這里插入圖片描述
(3)將主機名稱映射hosts文件中

sudo vim /etc/hosts

添加的內容如下
在這里插入圖片描述
根據自己的IP地址,填入連續的IP,后面的是主機名
注意:我們同樣也需要把上面的ip地址映射Windowshosts

C:\Windows\System32\drivers\etc

如果不能更改可以把hosts復制出來,修改后再替換即可

6、安裝epel-release

sudo yum install -y epel-release

如果安裝出現以下情況
在這里插入圖片描述
解決:kill -9 進程號,在重新執行命令
7、卸載自帶的openjdk,並創建/opt/module//opt/software
(1)卸載openjdk

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

(2)創建/opt/module/opt/software

sudo mkdir /opt/module
sudo mkdir /opt/software

修改/opt/module/opt/software的所有權

sudo chown andy:andy /opt/module /opt/software

注:andy:andy是我的用戶名
8、安裝hadoop和jdk
(1)上傳hadoop和jdk
用secureCRT連接linux后,安裝yum -y install lrzsz,輸入rz,找到hadoop和jdk文件位置。
注:找到文件后,要選擇add。我把文件放在了/opt/software
在這里插入圖片描述
(2)安裝hadoop和jdk,並配置文件
把文件解壓到/opt/module

tar -zxvf /opt/software/hadoop-3.3.0.tar.gz -C /opt/module/
tar -zxvf /opt/software/jdk-8u281-linux-x64.tar.gz -C /opt/module/

配置環境

sudo vim  /etc/profile.d/my_env.sh

添加

#JAVA HOME
export JAVA_HOME=/opt/module/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin

#Hadoop
export HADOOP_HOME=/opt/module/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

注:JAVA_HOME 和HADOOP_HOME是Hadoop和jdk的位置
保存后,輸入source /etc/profile,讓環境立刻起效
檢驗:hadoop和jdk是否安裝好

hadoop 
java

在這里插入圖片描述

在這里插入圖片描述

二、克隆模板機

1、克隆centos,克隆其他兩台:hadoop02hadoop03
克隆之前,需要先關閉虛擬機。

在這里插入圖片描述
在這里插入圖片描述
一定選擇創建完整克隆
在這里插入圖片描述
2、修改克隆機的主機名IP地址,兩台都要修改
(1)修改主機名

sudo vim /etc/hostname

它們的主機名分別是hadoop02hadoop03
因為是克隆的第一台,主機名和ip地址都是上一台的
(2)修改IP地址

sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改IPADDRKK
在這里插入圖片描述
它們的IP分別是192.168.23.11192.168.23.12
注:它們是我的IP地址,需要修改
(3)重啟克隆的虛擬機

reboot

3、檢查克隆虛擬機的主機名、IP地址、網絡、hadoop和jdk
(1)檢查主機名

hostname

(2)檢查IP地址

ifconfig

檢查是不是自己和設置的一樣
在這里插入圖片描述
(3)檢查網絡

ping www.baidu.com

在這里插入圖片描述
(4)檢查一下jak和hadoop
執行

java
hadoop

三、配置集群

1、創建ssh 無密登錄
注:都是在普通用戶
(1)生成公鑰和私鑰

ssh-keygen -t rsa

然后敲三次回車
在這里插入圖片描述
然后生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
位置在:/home/用戶名/.ssh
在這里插入圖片描述
(2)將公鑰發給hadoop01、hadoop02、hadoop03

ssh-copy-id hadoop01
ssh-copy-id hadoop02
ssh-copy-id hadoop03

注意:創建無密登錄需要,分別在hadoop01、hadoop02、hadoop03都配置一下。

注:它們都是在普通用戶下配置的無密登錄,在普通用戶創建的只能登陸普通用戶的。
都在root用戶創建無密登錄,就能登錄root用戶了。
注:hadoop02 的ip地址已經映射到了hosts

2、創建一個分享文件腳本,這樣就方便把虛擬機的文件傳給其他的虛擬機了
(1)在家目錄下創建一個bin文件,並進入bin中

mkdir /home/用戶/bin
cd bin   

(2)在bin中創建xsync文件

vim xsync

添加的文件如下:
注意:需要把for host in hadoop01 hadoop02 hadoop03中的hadoop01、hadoop02、hadoop03改為自己的主機名一定要改

#!/bin/bash
#1. 判斷參數個數
if [ $# -lt 1 ] 
then
	echo Not Enough Arguement! 
	exit;
fi
#2. 遍歷集群所有機器
for host in hadoop01 hadoop02 hadoop03 
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

該腳本主要是:rsync

(3)修改xsync的權限

sudo chmod 777 xsync

(4)測試腳本

xsync /home/用戶/bin

把bin中的文件分發給其他虛擬機 hadoop01、hadoop02、hadoop03
(5)將它復制到/bin中,方便在全局中使用

sudo cp xsync /bin/

3、配置hadoop
集群規划
在這里插入圖片描述
1)配置集群
提醒:注意value中的內容
(1)核心配置文件——core-site.xml

cd /opt/module/hadoop-3.3.0/etc/hadoop/
vim core-site.xml

<configuration> </configuration>中添加內容:

<!-- 指定 NameNode 的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:8020</value>
</property>

<!-- 指定 hadoop 數據的存儲目錄 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-3.3.0/data</value>
</property>

<!-- 配置 HDFS 網頁登錄使用的靜態用戶為 andy -->
<property>
<name>hadoop.http.staticuser.user</name>
<value>andy</value>
</property>

注意:文件中的<value>hdfs://hadoop01:8020</value><value>/opt/module/hadoop-3.3.0/data</value><value>andy</value>中的內容,
第一個要hadoop01,這個是我的主機名
第二個是/opt/module/hadoop-3.3.0/data,這個是data的位置,注意路徑是否存在;
第三andy是我的用戶名

在這里插入圖片描述
(2)HDFS配置文件——hdfs-site.xml

vim hdfs-site.xml

<configuration> </configuration>中添加內容:

<!-- nn web 端訪問地址-->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop01:9870</value>
</property>
<!-- 2nn web 端訪問地址-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop03:9868</value>
</property>

注意value中內容
<value>hadoop01:9870</value> <value>hadoop03:9868</value>
hadoop01和hadoop03是我的主機名

(3)YARN配置文件——yarn-site.xml

vim yarn-site.xml

<configuration> </configuration>中添加內容:

<!-- 指定 MR 走 shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

<!-- 指定 ResourceManager 的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop02</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_MAPRED_HOME</value>
</property>
<!-- 開啟日志聚集功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 設置日志聚集服務器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://hadoop01:19888/jobhistory/logs</value>
</property>
<!-- 設置日志保留時間為 7 天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

注意:<value>http://hadoop01:19888/jobhistory/logs</value>

(4)MapeRduce配置——mapred-site.xml

vim mapred-site.xml

<configuration> </configuration>中添加內容:

<!-- 指定 MapReduce 程序運行在 Yarn 上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

<!-- 歷史服務器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop02:10020</value>
</property>

<!-- 歷史服務器 web 端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>

注意:<value>hadoop102:10020</value> <value>hadoop01:19888</value>
(5)將配置文件發給其他虛擬機

xsync /opt/module/hadoop-3.3.0/etc/hadoop

注意:在hadoop02和hadoop03上查看文件是否存在

 cat /opt/module/hadoop-3.3.0/etc/hadoop/core-site.xml 

(5)配置workers

vim workers

添加主機名,如下:
在這里插入圖片描述
同步該文件

 xsync /opt/module/hadoop-3.3.0/etc/hadoop/workers 

注意:查看hadoop02、hadoop03是否接收到文件

 cat /opt/module/hadoop-3.3.0/etc/hadoop/workers 

2)啟動集群
(1)第一次啟動需要初始化

cd /opt/module/hadoop-3.3.0
hdfs namenode -format

會在 /opt/module/hadoop-3.3.0/下生成datalogs 文件
如果一會兒在運行集群中出現問題,需要把data和logs刪除,在進行初始化
集群出現問題注意配置文件是否有問題
(2)啟動HDFS

sbin/start-dfs.sh

(3)啟動YARN,需要去hadoop02中啟動

cd /opt/module/hadoop-3.3.0
sbin/start-yarn.sh

(4)用jps分別查看hadoop01、hadoop02、hadoop03啟動情況
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
3)創建集群啟動的腳本和查看啟動清楚的
(1)創建集群啟動的腳本

vim /home/用戶/bin/myhadoop.sh 

輸入內容:

#!/bin/bash

if [ $# -lt 1 ] 
then
        echo "No Args Input..."
        exit ;
fi

case $1 in 
"start")
        echo " =================== 啟動 hadoop 集群 ==================="

        echo " --------------- 啟動 hdfs ---------------"
        ssh hadoop01 "/opt/module/hadoop-3.3.0/sbin/start-dfs.sh" 
        echo " --------------- 啟動 yarn ---------------"
        ssh hadoop02 "/opt/module/hadoop-3.3.0/sbin/start-yarn.sh" 
        echo " --------------- 啟動 historyserver ---------------"
        ssh hadoop03 "/opt/module/hadoop-3.3.0/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 關閉 hadoop 集群 ==================="

        echo " --------------- 關閉 historyserver ---------------"
        ssh hadoop01 "/opt/module/hadoop-3.3.0/bin/mapred --daemon stop historyserver"
        echo " --------------- 關閉 yarn ---------------"
        ssh hadoop02 "/opt/module/hadoop-3.3.0/sbin/stop-yarn.sh" 
        echo " --------------- 關閉 hdfs ---------------"
        ssh hadoop03 "/opt/module/hadoop-3.3.0/sbin/stop-dfs.sh"
;;
*)
        echo "Input Args Error..."
;;
esac

注意:/opt/module/hadoop-3.3.0是安裝hadoop的路徑,這里需要修改
修改權限並復制到/bin

chmod 777 myhadoop.sh
sudo cp myhadoop.sh /bin/

使用:
啟動:myhadoop.sh start
停止:myhadoop.sh stop
(2)查看啟動進程的腳本

vim /home/用戶/bin/jpsall

輸入內容如下:

#!/bin/bash

for host in hadoop01 hadoop02 hadoop03 
do
echo =============== $host ===============
ssh $host jps
done

修改權限並復制到/bin

chmod 777 jpsall
sudo cp jpsall /bin/

(3)將/home/用戶/bin分發給其他機器

xsync /home/andy/bin/

補充知識:
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM