一、下载软件
1.JDK11(版本太高不一定就好,我试了16版本的,运行java文件的时候会发生错误)
2.VMware-workstation pro 16
3.CentOS-7.iso (linux的虚拟机都行)(我这里是3台虚拟机)
4.hadoop 3.3.0
5.FileZilla(连接虚拟机,可以简单的操作文件)
软件下载可以去官网下载,我这里也有这些软件的种子文件:链接:hadoop完全分布式搭建所需软件
提取码:co3u
软件如下图所示:
关于怎么打开种子文件,可以看这里的教程:下载种子文件教程
二、hadoop的静态IP配置
因为CentOS-7系统没有IP显示,所以需要配置静态IP,静态IP配置教程:静态IP配置
三台虚拟机都要配置好静态IP,我这里配置的内容是hadoop1:192.128.27.100;hadoop2:192.128.27.101;hadoop3:192.168.27.102
配置好静态IP之后,就可以使用FileZilla软件连接虚拟机了,连接如下图所示:
连接好之后就可以对虚拟机的文件进行操作了。
三、关闭防火墙
Centos7默认安装了firewalld,如果没有安装的话,可以使用 yum install firewalld firewalld-config
进行安装。
在三台虚拟机上都要操作,在终端输入:
systemctl stop firewalld #禁用防火墙
sytemctl disable firewalld #停止并禁用开机启动
在输入systemctl status firewalld
查看虚拟机状态,为(dead)就算关闭成功。
四、配置JDK和Hadoop
步骤一:修改hostname(3台虚拟机都要操作)
在虚拟机终端输入:
vi /etc/hostname
按 i 进入修改模式,修改完后按Esc,最后按:wq保存退出。
修改3台虚拟机的hostname,我这里是将hadoop1修改为master,hadoop2修改为slave1,hadoop3修改为slave2;如下图所示:
最后修改完都要进行重启,名字才会变成你修改之后的名字。终端输入
reboot #重启
步骤二:修改hosts文件,配置映射(只对master虚拟机进行配置,后两台复制配置即可)
在虚拟机终端输入:
vi /etc/hosts #修改hosts文件
然后将配置复制给其他两台虚拟机,在master终端输入:
scp /etc/hosts slave1:/etc #将master的hosts文件复制给slave1虚拟机
scp /etc/hosts slave2:/etc #将master的hosts文件复制给slave1虚拟机
步骤三:JDK和hadoop的配置(只对master虚拟机进行配置,后两台复制配置即可)
1.在根目录下创建/data/packs文件夹 存放hadoop和jdk的安装压缩包,创建software文件夹存放压缩后的文件(这步可以通过FileZilla可视化操作,也可以在虚拟机终端操作)
下面为虚拟机终端的操作,在终端输入代码:
mkdir -P /data/packs #创建/data/packs文件夹 用于存放hadoop和jdk的安装压缩包
mkdir /software #创建software文件夹 用于存放压缩后的文件
tar zxvf /data/packs/packs/hadoop-3.3.0.tar.gz -C /software #解压hadoop压缩包,并将解压后的文件存入software文件夹中
tar zxvf /data/packs/packs/jdk-11_linux-x64_bin.tar.gz -C /software #解压hadoop压缩包,并将解压后的文件存入software文件夹中
注意: 刚刚创建好的/data/packs文件夹中并没有hadoop和jdk压缩包,你需要把自己下好的压缩包通过FileZilla从本地电脑拖入虚拟机中,才能进行解压,如下图所示:
2.到这里,software文件夹中就有了hadoop和jdk文件,为了方便环境变量的配置,我们这里要对jdk文件和hadoop文件进行重命名(可以在FileZilla中操作,也可以在终端操作)
在终端操作的过程,输入:
mv /software/hadoop-3.3.0/ /software/hadoop #将hadoop-3.3.0文件夹重新命名为hadoop
mv /software/jdk-11/ /software/java #将hadoop-3.3.0文件夹重新命名为java
如下图所示,在software中有名字为hadoop和java的文件夹。
3.修改hadoop上的一些配置文件(7个)
(比较简单)方法一: 我给的种子文件中就有hadoop的配置文件,是我已经配置好的,可以通过FileZilla直接复制进文件夹中,覆盖原文件,如下图所示:
方法二: 需要修改7个配置文件
(1)hadoop/etc/hadoop/core-site.xml
(2)hadoop/etc/hadoop/yarn-site.xml
(3)hadoop/etc/hadoop/hdfs-site.xml
(4)hadoop/etc/hadoop/mapred-site.xml
(5)hadoop/etc/hadoop/workers (hadoop为3.0以下版本的为slaves文件)
(6)hadoop/etc/hadoop/hadoop-env.sh
(7)hadoop/etc/hadoop/yarn-env.sh
你可以通过FileZilla将这些文件下载到本地电脑进行配置,然后再复制会虚拟机;也可以直接再终端进行配置。
下面我将介绍在终端怎么进行配置(以core-site.xml为例,其它文件也一样配置):
在终端输入vi /software/hadoop/etc/hadoop/core-site.xml
进入core-site.xml文件进行配置,配置结果如下图所示:可以直接敲进去
注意,这里的终端不支持中文显示,中文会出现乱码。
按 i 进入修改模式,修改完后按Esc,最后按:wq保存退出。
其他文件的配置也是通过vi指令进入配置,配置的代码我也在上传的种子文件中放了,如下图所示:
这里有7个配置文件的所有配置代码,直接复制就行。因为不支持中文显示,复制的时候不要有中文注释。
如果没有下载我的种子文件,想要看具体的配置信息,可以点击这个连接查看:hadoop的7个配置文件代码
4.到这一步,配置好的jdk和hadoop文件已经存在master虚拟机中了,可以使用scp命令将他们复制到另外两台虚拟机中。复制过程用时1~2分钟左右。
scp -r /software/ slave1:/ #将java和hadoop文件夹拷贝到slave1虚拟机中
scp -r /software/ slave2:/ #将java和hadoop文件夹拷贝到slave2虚拟机中
5.然后需要配置jdk和hadoop的环境变量,在master虚拟机终端输入:
vi /etc/profile #修改环境变量
按 i 进入修改模式,把下图红色方框中的代码敲入配置文件中,修改完后按Esc,最后按:wq保存退出。
输入内容如下:
# java and hadoop
export JAVA_HOME=/software/java
export HADOOP_HOME=/software/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
然后输入. etc/profile
激活配置。
同样的,到这里master虚拟机的环境变量就配置完成了,也要将它们复制给另外两台虚拟机,在master终端输入:
scp /etc/profile slave1:/etc #将环境变量拷贝给slave1虚拟机
scp /etc/profile slave2:/etc #将环境变量拷贝给slave2虚拟机
拷贝结束后分别在两台虚拟机上输入. etc/profile
激活环境配置。
五、配置ssh的免密登录
1.三台虚拟机都在终端输入:
ssh-keygen
查看根目录下是否有.ssh文件生成,有则密钥生成成功,如下图所示:
2.进入.ssh文件夹配置:
(1)在master上配置
cd ~/.ssh #进入.ssh文件夹
cat id_rsa.pub >> authorized_keys #把密钥追加到authorized_keys
此时,master中的authorized_keys 就有master的密钥了,把这个authorized_keys 拷贝给slave1虚拟机,在master终端输入:scp authorized_keys slave1:~/.ssh
(2)在slave1上配置
cd ~/.ssh #进入.ssh文件夹
cat id_rsa.pub >> authorized_keys #把密钥追加到authorized_keys
此时,slave1中的authorized_keys 就有master和slave1的密钥了,把这个authorized_keys 拷贝给slave2虚拟机,在slave1终端输入:scp authorized_keys slave2:~/.ssh
(3)在slave2上配置
cd ~/.ssh #进入.ssh文件夹
cat id_rsa.pub >> authorized_keys #把密钥追加到authorized_keys
此时,slave2中的authorized_keys 就有master、slave1和slave2的密钥了,把这个authorized_keys 拷贝给master和slave1虚拟机,在slave2终端输入:
scp authorized_keys slave1:~/.ssh #拷贝给slave1虚拟机
scp authorized_keys master:~/.ssh #拷贝给master虚拟机
这时候三台虚拟机上的authorized_keys都追加了三个密钥,使用cat命令查看是否有三个,输入:
cat authorized_keys
看到3个密钥,说明免密登录配置成功,下面来验证。我就举一个maste免密连接slave1的例子,输入:
ssh slave1
如图,不需要登入密码就可以用ssh连接slave1虚拟机了,证明配置成功。
六、运行hadoop并验证
步骤一:格式化namenode
输入cd /software/hadoop/bin
进入bin目录下进行格式化,输入hdfs namenode -format
进行格式化namenode。
步骤二:启动hadoop节点:
输入cd /software/hadoop/sbin
进入sbin的文件夹内,输入命令 . /start-all.sh
启动hadoop,如下图所示:
步骤三:查看各节点的启动情况
在三台虚拟机中输入jps
查看,如下图所示就算启动成功:
步骤四:验证网页端启动
根据自己配置的ip和端口在网页地址栏输入:
192.168.27.100:50070 #启动hdfs网页端
192.168.27.100:8088 #启动yarn网页端
启动成功后要想知道如何运行java代码,请点击完全分布式hadoop运行java代码实例