下载镜像网址:
阿里云开源镜像站资源目录选10.5GB的
压缩包:链接:
百度网盘 请输入提取码提取码:qwer
准备3台centos8的虚拟机只要装一台其他直接克隆即可,主节点叫master,另外两个节点分别为slave1和slave2,然后开始
三台机子在同一个网段(本次实验用自定义里的NAT模式)
master节点改名
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash
[root@master ~]#
配置网络信息、主机名以及主机名与IP地址的映射关系(在所有节点上执行)
[root@master ~]cd /etc/sysconfig/network-scripts/
[rootamaster network-scripts]#ls
ifcfg-ens33
[rootamaster network-scripts]#vi ifcfg-ens33
vi ifcfg-网卡名
TYPE=Ethernet
NAME=网卡名
DEVICE=网卡名
BOOTPROTO=static
ONBOOT=yes
IPADDR=你自己的IP地址
NETMASK=255.255.255.0
GATEWAY=你自己的网关
DNS1=114.114.114.114
TYPE=Ethernet
PROXY METHOD=none
BROWSER ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4 FAILURE FATAL=no
IPV6INIT=yes
IPV6 AUTOCONF=yes
IPV6 DEFROUTE=yes
IPV6 FAILURE FATAL=no
NAME=ens33
UUID=cfdf9998-fb9c-4ea9-aa7c-ff6ab3c83a6c
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.88.4
NETMASK=255.255.255.0
GATEWAY=192.168.88.2
DNS1=114.114.114.114
[root@master ~]vi /etc/resolv.conf
[root@master ~]
Generated by NetworkManager
#search localdomain
nameserver114.114.114.114
[root@master ~]systemctl restart NetworkManager刷新网络如果网址没有变化重启一下就行
关闭防火墙与SELinux(在所有节点执行以下命令)
systemctl disable --now firewalld
vi /etc/selinux/config
SELINUX=disabled
保存配置后执行以下命令
setenforce 0
ping通外网
[rootamaster ~]ping
www.baidu.com
ING
www.a.shifen.com
(14.215.177.39)56(84)bytes of data.
64 bytes from14.215.177.39(14.215.177.39):icmp seq=1ttl=128time=23.7ms
64 bytes from14.215.177.39(14.215.177.39):icmp seq:=2ttl=128time=25.9ms
4 bytes from14.215.177.39(14.215.177.39):icmp seq=3ttl=128time=24.10ms
C
www.a.shifen.com
ping statistics --
packets transmitted,3 received,0%packet loss,time 2006ms
tt min/avg/max/mdev=23.652/24.848/25.900/0.941ms
master上网络ping通后就可以克隆slave1和slave2了
slave1和slave2节点改名
hostnamectl set-hostname slave1/slave2
bash
slave1和slave2网络设置同上
master:192.168.88.4
slave1:192.168.88.5
slave2:192.168.88.6
三台机子连上
Xshell
在每个节点上创建hadoop用户
useradd hadoop
echo 'hadoop' | passwd --stdin hadoop(hadoop用户的密码是hadoop)
配置主机映射关系(在master、slave1、slave2三台主机上配置以下信息)
vi /etc/hosts(要把/etc/hosts里的内容清空后再加入)
192.168.88.4 master
192.168.88.5 slave1
192.168.88.6 slave2
保存以上配置后执行以下命令(看看能不能ping通)
ping master
ping slave1
ping slave2
在master上执行
在/opt目录下新建software目录
[root@master ~]mkdir -p /opt/software
用Xftp传输将压缩包放在这个目录
[root@master ~]cd /opt/software/
[rootamaster software]#ls
hadoop-2.7.1.tar.gz jdk-8u152-linux-x64.tar.gz
[root@master software]#
解压压缩包
tar
-zxvf /opt/software/hadoop-2.7.1.tar.gz -C
/usr/local/src/
tar -zxvf /opt/software/jdk-8u152-linux-x64.tar.gz -C /usr/local/src/
[root@master ~]cd /usr/local/src/
[root@master src]#ls
hadoop-2.7.1jdk1.8.0_152
改个名字
[root@master src]# mv hadoop-2.7.1/ hadoop
[root@master src]# mv jdk1.8.0_152/ jdk
[root@master src]# ls
hadoop jdk
执行以下命令修改/usr/local/src/hadoop 目录的权限(master节点(root用户))
chown -R hadoop.hadoop /usr/local/src/hadoop
配置环境(在末尾加)
[root@master ~]# vi /etc/profile
export JAVA_HOME=/usr/local/src/jdk
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
[root@master ~]# source /etc/profile
在hadoop用户上执行
[root@master ~]# su - hadoop
[hadoop@master ~]# source /etc/profile
输入
echo ¥PATH看看有没有环境
然后输入java -version 查看是否成功
[hadoop@master ~]$ java -version
java version "1.8.0_152"
Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
执行以下命令修改 hadoop-env.sh 配置文件
(在master上执行)
[root@master ~]# vi /usr/local/src/hadoop/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/local/src/jdk
配置hdfs-site.xml文件参数
(在master上执行)
vi /usr/local/src/hadoop/etc/hadoop/hdfs-site.xml
在文件中
和
一对标签之间追加以下配置信息
dfs.namenode.name.dir
file:/usr/local/src/hadoop/dfs/name
dfs.datanode.data.dir
file:/usr/local/src/hadoop/dfs/data
dfs.replication
2
保存以上配置后执行以下命令
mkdir -p /usr/local/src/hadoop/dfs/{name,data}
配置core-site.xml文件参数
(在master(hadoop用户)上执行)
vi /usr/local/src/hadoop/etc/hadoop/core-site.xml
在文件中
和
一对标签之间追加以下配置信息
fs.defaultFS
hdfs://master:9000
io.file.buffer.size
131072
hadoop.tmp.dir
file:/usr/local/src/hadoop/tmp
保存以上配置后执行以下命令
mkdir -p /usr/local/src/hadoop/tmp
配置mapred-site.xml
(在master上执行)
cd /usr/local/src/hadoop/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
vi /usr/local/src/hadoop/etc/hadoop/mapred-site.xml
在文件中
和
一对标签之间追加以下配置信息
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master:10020
mapreduce.jobhistory.webapp.address
master:19888
配置yarn-site.xml
(在master上执行)
vi /usr/local/src/hadoop/etc/hadoop/yarn-site.xml
在文件中
和
一对标签之间追加以下配置信息
arn.resourcemanager.address
master:8032
yarn.resourcemanager.scheduler.address
master:8030
yarn.resourcemanager.webapp.address
master:8088
yarn.resourcemanager.resource-tracker.address
master:8031
yarn.resourcemanager.admin.address
master:8033
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce_shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
hadoop其它相关配置
在master上执行以下命令
vi /usr/local/src/hadoop/etc/hadoop/masters
在此文件中列出所有master节点的IP
192.168.88.4
保存上述配置后执行以下命令
vi /usr/local/src/hadoop/etc/hadoop/slaves
Master 节点仅作为名称节点使用,因此将 slaves 文件中原来的 localhost 删
除,并添加 slave1、slave2 节点的 IP 地址。
在此文件中列出所有slave节点的IP
192.168.88.5
192.168.88.6
在master中输入以下命令:
ssh-keygen -t rsa然后一直按回车直到命令结束。同样的操作在,slave1,slave2中进行
在master依次输入下面命令:
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
输入yes和master节点密码(slave1和slave2同上)
在slave1依次输入下面命令:
ssh-copy-id master
ssh-copy-id slave2
在slave2依次输入下面命令:
ssh-copy-id master
ssh-copy-id slave1
同步master节点(root用户)的相关文件至所有的slave上去
scp -r /usr/local/src/* root@slave1:/usr/local/src/
scp -r /usr/local/src/* root@slave2:/usr/local/src/
scp /etc/profile root@slave1:/etc/profile
scp /etc/profile root@slave2:/etc/profile
执行完后执行
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile
在每个 Slave 节点上修改/usr/local/src/hadoop 目录的权限
[root@slave1~]# chown -R hadoop:hadoop /usr/local/src/hadoop/
[root@slave2~]# chown -R hadoop:hadoop /usr/local/src/hadoop/
使每个 Slave 节点上配置的 Hadoop 的环境变量生效
[hadoop@slave1~]# source /etc/profile
[hadoop@slave2~]# source /etc/profile
配置
Hadoop
格式化
将 NameNode 上的数据清零,第一次启动 HDFS 时要进行格式化,以后启动无需再格式
化,否则会缺失 DataNode 进程。另外,只要运行过 HDFS,Hadoop 的工作目录(设置为
/usr/local/src/hadoop/tmp
)就会有数据,如果需要重新格式化,则在格式化之前一定要先删
除工作目录下的数据,否则格式化时会出问题
[root@master ~]# cd /usr/local/src/hadoop/
[root@master hadoop]# ./bin/hdfs namenode -format
接下来启动集群:
[root@master ~]# start-all.sh
[root@master ~]# jps
4342 Jps
3895 SecondaryNameNode
3660 NameNode
4078 ResourceManager
[root@slave1 ~]# jps
4355 NodeManager
4202 DataNode
4492 Jps
[root@slave2 ~]# jps
4288 NodeManager
4424 Jps
4125 DataNode
在浏览器的地址栏输入
http://master:50070
,进入页面可以查看NameNode和DataNode信息
如果打不开界面打开C:WindowsSystem32driversetc目录修改hosts文件加入信息(ip地址和名字)即可
192.168.88.4 master
在浏览器的地址栏输入
http://master:50090
,进入页面可以查看 SecondaryNameNode
信息