Hadoop集群模式的搭建之三:搭建Hadoop完全分布式集群
Hadoop可以按如下3种模式进行安装和运行。
(1)单机模式:Hadoop的默认模式,安装时不需要修改配置文件
(2)伪分布式模式:Hadoop安装在一台计算机上,需要修改相应的配置文件,用一台计算机模拟多台主机的集群。
(3)完全分布式模式:在多台计算机上安装JDK和Hadoop,组成相互连通的集群,需要修改相应的配置文件;Hadoop的守护进程运行在由多台主机搭建的集群上
基于前面两节搭建的3台linux虚拟机环境,本节开始搭建和配置Hadoop的完全分布式集群。
安装与配置Hadoop3.1.4版本
- 解压缩软件包
将下载好的Hadoop3.1.4.tar.gz上传至master节点的root目录后,然后以下执行命令进行解压并切换到解压目录
tar -zxvf /root/hadoop-3.1.4.tar.gz -C /usr/local/src4
cd /usr/local/src/
- 修改文件夹名称
为了简化后续配置,此处需要修改文件夹名称,执行以下命令
mv hadoop-3.1.4 hadoop
- 修改环境变量文件
为了在任何目录下直接执行Hadoop的相关命令,可以在环境变量文件中添加Hadoop的环境变量。执行vi /root/.bash_profile
,进入修改模式,将以下内容添加到环境变量文件的末尾
# set hadoop
export HADOOP_HOME=/usr/local/src/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#3.x版本新增配置项
export HDFS_NAMENODE_USER=root
export HDFS_DATANOEE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin
- 修改hadoop-env.sh配置文件
从这里开始,需要修改Hadoop配置文件夹中的相关配置文件,需要修改的配置文件在/usr/local/src/hadoop/etc/hadoop文件夹下。在hadoop-env.sh文件中需要配置JAVA_HOME的安装目录,目的时在Hadoop启动时能够执行守护进程,执行以下命令编辑配置文件
cd /usr/local/src/hadoop/etc/hadoop
vi hadoop-env.sh
将以下内容配置追加到文件末尾
export JAVA_HOME=/usr/local/src/java
- 修改core-site.xml配置文件
core-site.xml文件时Hadoop的核心配置文件,配置该文件的目的是配置HDFS地址、端口号及临时文件夹。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/src/hadoop/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
- 修改hdfs-site.xml配置文件
hdfs-site.xml文件用于设置HDFS的NameNode和DataNode两大进程属性,以及HDFS数据文件的副本数。
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/src/hadoop/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/src/hadoop/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
</configuration>
- 修改mapred-site.xml配置文件
mapred-site.xml文件是MapReduce的核心配置文件,用于指定MapReduce运行时的框架属性。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
- 修改yarn-site.xml配置文件
yarn-site.xml是YARN框架的核心配置文件,需要指定YARN集群的管理者等属性。
<?xml version="1.0"?>
<!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>master:8090</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/data/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/data/tmp/logs</value>
</property>
<description>URL for job history server</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.map.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>/usr/local/src/hadoop/etc/hadoop:/usr/local/src/hadoop/share/hadoop/common/lib/*:/usr/local/src/hadoop/share/hadoop/common/*:/usr/local/src/hadoop/share/hadoop/hdfs:/usr/local/src/hadoop/share/hadoop/hdfs/lib/*:/usr/local/src/hadoop/share/hadoop/hdfs/*:/usr/local/src/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/src/hadoop/share/hadoop/mapreduce/*:/usr/local/src/hadoop/share/hadoop/yarn:/usr/local/src/hadoop/share/hadoop/yarn/lib/*:/usr/local/src/hadoop/share/hadoop/yarn/*</value>
</property>
- 修改从节点文件
在/usr/local/src/hadoop/etc/hadoop目录下有一个workers文件,该文件中记录了集群中的所有从节点(HDFS的DataNode和YARN的NodeManager所在的主机),用来配合一键启动脚本时启动集群中的所有从节点。执行"vi workes"命令在workers文件中追加配置信息,如下所示,该文件中原有的"localhost"内容可以保留并让master节点同时充当NameNode和DataNode,或者删掉"localhost"行,让master节点仅作为NameNode,保存并退出
slave1
slave2
- 创建文件目录
由于在前面的配置文件中配置Hadoop集群的临时文件夹,相关的NameNode和DataNode的文件路径,需要创建这些文件夹,执行以下命令
cd /usr/local/src/hadoop
mkdir /usr/local/src/hadoop/tmp
mkdir /usr/local/src/hadoop/tmp/dfs/name -p
mkdir /usr/local/src/hadoop/tmp/dfs/data -p
- 分发配置文件到slave节点上
将master节点上配置好的hadoop文件夹和环境变量文件分别分发到slave1节点和slave2节点上。执行以下命令进行分发
scp -r /usr/local/src/hadoop slave1:/usr/local/src/
scp -r /usr/local/hadoop slave2:/usr/local/src/
scp /root/.bash_profile slave1:/root/
scp /root/.bash_profile slave2:/root/
- 生效环境变量
source /root/.bash_profile
- 测试Hadoop的安装情况
执行"Hadoop version"命令查看安装的Hadoop版本信息,若如以下所示,则表示安装成功
[root@master hadoop]# hadoop version
Hadoop 3.2.4
Source code repository Unknown -r 7e5d9983b388e372fe640f21f048f2f2ae6e9eba
Compiled by ubuntu on 2022-07-12T11:58Z
Compiled with protoc 2.5.0
From source with checksum ee031c16fe785bbb35252c749418712
This command was run using /usr/local/src/hadoop/share/hadoop/common/hadoop-common-3.2.4.jar