注:本文是对 https://www.bilibili.com/video/BV1CU4y1N7Sh
的实践。
VMWare的网络设置:略。
准备好3台虚拟机,其IP地址分别为 192.168.88.151
、 192.168.88.152
、 192.168.88.153
,其 hostname
分别为 host1
、 host2
、 host3
。
以第一台VM为例:
[root@node1 ~]# ifconfig
ens33: flags=4163,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.88.151 netmask 255.255.255.0 broadcast 192.168.88.255
inet6 fe80::5cc6:871d:9fc8:4b58 prefixlen 64 scopeid 0x20
ether 00:0c:29:34:0b:53 txqueuelen 1000 (Ethernet)
RX packets 695530 bytes 698868702 (666.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1633377 bytes 4000289117 (3.7 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 3807 bytes 556130 (543.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3807 bytes 556130 (543.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node1 ~]# hostname
node1.itcast.cn
[root@node1 ~]# hostname -s
node1
编辑 etc/hosts
文件,如下:
[root@node1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.88.151 node1 node1.itcast.cn
192.168.88.152 node2 node2.itcast.cn
192.168.88.153 node3 node3.itcast.cn
安装JDK 1.8(略):
[root@node1 ~]# java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
[root@node1 ~]# echo $JAVA_HOME
/export/server/jdk1.8.0_241
集群时间同步:
ntpdate ntp5.aliyun.com
防火墙关闭:
firewall-cmd --state #查看防火墙状态
systemctl stop firewalld.service #停止firewalld服务
systemctl disable firewalld.service #开机禁用firewalld服务
ssh免密登录(略):
[root@node1 ~]# ssh node2
Last login: Mon Dec 12 10:15:18 2022 from 192.168.88.151
[root@node1 ~]# ssh node3
Last login: Mon Dec 12 10:16:09 2022 from 192.168.88.151
注:以上操作需要在3台VM上都做一遍。
把hadoop的压缩包放到 /export/server
目录并解压。可以用所提供的 hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
,也可以到Hadoop网站上下载最新的(3.3.4)包。以node1为例:
tar -zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz
以下操作是在Hadoop的安装目录( /export/server/hadoop-3.3.0
)进行。
编辑 etc/hadoop/hadoop-env.sh
文件,添加如下内容:
export JAVA_HOME=/export/server/jdk1.8.0_241
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
编辑 etc/hadoop/core-site.xml
文件,在
和 之间添加如下内容:
<property>
<name>fs.defaultFSname>
<value>hdfs://node1:8020value>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/export/data/hadoop-3.3.0value>
property>
<property>
<name>hadoop.http.staticuser.username>
<value>rootvalue>
property>
<property>
<name>hadoop.proxyuser.root.hostsname>
<value>*value>
property>
<property>
<name>hadoop.proxyuser.root.groupsname>
<value>*value>
property>
<property>
<name>fs.trash.intervalname>
<value>1440value>
property>
编辑 etc/hadoop/hdfs-site.xml
文件,在
和 之间添加如下内容:
<property>
<name>dfs.namenode.secondary.http-addressname>
<value>node2:9868value>
property>
编辑 etc/hadoop/mapred-site.xml
文件,在
和 之间添加如下内容:
<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>
<property>
<name>mapreduce.jobhistory.addressname>
<value>node1:10020value>
property>
<property>
<name>mapreduce.jobhistory.webapp.addressname>
<value>node1:19888value>
property>
<property>
<name>yarn.app.mapreduce.am.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.map.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property>
<name>mapreduce.reduce.envname>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
编辑 etc/hadoop/yarn-site.xml
文件,在
和 之间添加如下内容:
<property>
<name>yarn.resourcemanager.hostnamename>
<value>node1value>
property>
<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>
<property>
<name>yarn.nodemanager.pmem-check-enabledname>
<value>falsevalue>
property>
<property>
<name>yarn.nodemanager.vmem-check-enabledname>
<value>falsevalue>
property>
<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>
<property>
<name>yarn.log.server.urlname>
<value>http://node1:19888/jobhistory/logsvalue>
property>
<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>
编辑 etc/hadoop/workers
文件,清除原来的内容,添加如下内容:
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn
把上面的操作在node2和node3上分别再做一遍。或者也可以直接把node1上配置好的hadoop目录复制到node2和node3上的相应目录。
编辑 /etc/profile
文件(注意这次是根目录下的 etc
目录),添加如下内容:
export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
然后运行 source /etc/profile
命令使之生效。注意3个VM上都要做一遍。
格式化name node,由于name node部署在node1上,所以只需在node1上运行:
hdfs namenode -format
在刷屏的输出消息里,可以找到这一句:
2022-12-12 10:47:56,576 INFO common.Storage: Storage directory /export/data/hadoop-3.3.0/dfs/name has been successfully formatted.
注:格式化操作只能做一次。
启动/停止HDFS(在node1上运行):
start-dfs.sh
| stop-dfs.sh
start-yarn.sh
| stop-yarn.sh
start-all.sh
| stop-all.sh
启动集群后,可以通过web页面查看:
http://192.168.88.151:9870
通过 Utilities
-> Browse the file system
,可以通过GUI直接操作HDFS的文件系统。
http://192.168.88.151:8088
通过 jps
查看Java进程,确认各个VM在集群中的角色:
[root@node1 ~]# jps
91060 DataNode
126713 Jps
92090 ResourceManager
92284 NodeManager
90863 NameNode
[root@node2 server]# jps
91696 SecondaryNameNode
92054 NodeManager
90298 DataNode
128318 Jps
[root@node3 server]# jps
90017 DataNode
91745 NodeManager
128577 Jps
如下图所示: