CentOS虚拟机搭建Hadoop集群

注:本文是对 https://www.bilibili.com/video/BV1CU4y1N7Sh 的实践。

环境

  • CentOS 7.7
  • JDK 8
  • Hadoop 3.3.0

准备

VMWare的网络设置:略。

准备好3台虚拟机,其IP地址分别为 192.168.88.151192.168.88.152192.168.88.153 ,其 hostname 分别为 host1host2host3

以第一台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

CentOS虚拟机搭建Hadoop集群_第1张图片
通过 Utilities -> Browse the file system ,可以通过GUI直接操作HDFS的文件系统。

  • http://192.168.88.151:8088

CentOS虚拟机搭建Hadoop集群_第2张图片
在这里可以查看Hadoop的任务调度和状态。

集群的角色

通过 jps 查看Java进程,确认各个VM在集群中的角色:

  • node1:
[root@node1 ~]# jps
91060 DataNode
126713 Jps
92090 ResourceManager
92284 NodeManager
90863 NameNode
  • node2:
[root@node2 server]# jps
91696 SecondaryNameNode
92054 NodeManager
90298 DataNode
128318 Jps
  • node3:
[root@node3 server]# jps
90017 DataNode
91745 NodeManager
128577 Jps

如下图所示:

CentOS虚拟机搭建Hadoop集群_第3张图片

你可能感兴趣的:(hadoop,centos,大数据)