1. 修改主机名并配置 Hosts 映射 分别在三台机器上设置主机名:
# 在第一台机器执行
hostnamectl set-hostname master
# 在第二台机器执行
hostnamectl set-hostname slave1
# 在第三台机器执行
hostnamectl set-hostname slave2
编辑 /etc/hosts 文件,在所有机器的该文件末尾添加完整的映射信息:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
(以下操作仅在 master 节点执行)
生成公钥和私钥(一路回车即可):
ssh-keygen -t rsa
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
jdk-8u212-linux-x64.tar.gz)解压到 /opt/ 目录:Bash
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/
mv /opt/jdk1.8.0_212 /opt/jdk
/etc/profile:Bash
# 在文件末尾追加以下内容
export JAVA_HOME=/opt/jdk
export PATH=$PATH:$JAVA_HOME/bin
Bash
source /etc/profile
java -version
hadoop-3.3.6.tar.gz)到 /opt/:Bash
tar -zxvf hadoop-3.3.6.tar.gz -C /opt/
mv /opt/hadoop-3.3.6 /opt/hadoop
/etc/profile:Bash
# 在刚才添加的 JAVA_HOME 下面继续追加
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
执行 source /etc/profile 使其生效。
/opt/hadoop/etc/hadoop/ 目录下。hadoop-env.sh (在文件末尾追加完整的 Java 路径和运行用户配置):
Bash
export JAVA_HOME=/opt/jdk
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
core-site.xml (提供完整的 XML 结构):
XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
</configuration>
hdfs-site.xml (提供完整的 XML 结构):
XML
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:9868</value>
</property>
</configuration>
yarn-site.xml (提供完整的 XML 结构):
XML
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
mapred-site.xml (提供完整的 XML 结构):
XML
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<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>
workers (用于配置 DataNode 和 NodeManager 所在的节点,清空原文件并写入以下完整内容):
Plaintext
master
slave1
slave2
将配置好的 Hadoop 整个目录及系统环境变量文件同步到从节点:
Bash
scp -r /opt/hadoop root@slave1:/opt/
scp -r /opt/hadoop root@slave2:/opt/
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
在 slave1 和 slave2 上分别执行 source /etc/profile 使环境变量生效。
1. 格式化 NameNode(只在master) (仅在首次启动前执行一次,切勿重复格式化)
Bash
hdfs namenode -format
2. 启动 HDFS 和 YARN 在 master 节点上执行以下命令:
Bash
# 启动 HDFS 进程
start-dfs.sh
# 启动 YARN 进程
start-yarn.sh
3. 验证集群状态 在各节点输入 jps 命令查看运行的 Java 进程:
master 应该有:NameNode, DataNode, ResourceManager, NodeManager, Jps
slave1 应该有:SecondaryNameNode, DataNode, NodeManager,
Jps
DataNode, NodeManager, Jps最后,你可以通过浏览器访问 Hadoop 的 Web UI 来确认集群是否健康运行:
http://192.168.1.10:9870http://192.168.1.10:8088