0


Hadoop完全分布式配置流程

要将现有的 Hadoop 伪分布式配置升级为完全分布式环境,你需要对多个配置文件进行修改,同时在多台主机上配置相应的服务。根据你的集群配置(1 个 NameNode 和 2 个 DataNode),以下是完整的配置步骤。

1. 节点规划

机器1(主节点):192.168.91.139,主机名为 xx
机器2(从节点):192.168.91.140,主机名为 slave1
机器3(从节点):192.168.91.141,主机名为 slave2

2. 映射IP地址和主机名

cd /etc/hosts

在文件末尾添加如下内容。注意:IP地址主机名要根据实际情况填写。

192.168.91.139  xx(你的主机名)
192.168.91.140  slave1
192.168.91.141  slave2

同时也要添加到以下目录文件中:(

存在权限问题,很好解决

C:\Windows\System32\drivers\etc\hosts

3. 克隆(课堂上会讲解,网上也可以查询到,很简单)

4. 更改主机名和 IP 地址

克隆后的虚拟机会保留与原始主机相同的主机名和 IP 地址,这在分布式环境中会导致冲突。你需要确保每台虚拟机有独立的主机名和 IP 地址。
步骤:
修改每台从节点的主机名。
更新每个节点的 /etc/hosts 文件,确保三台主机的 IP 地址和主机名都正确配置。

(1)修改克隆出来的第一台主机名称为

slave1

ip

改为规划后的

ip地址

在虚拟机上打开克隆出来的第一台主机,编辑/etc/hostname文件

vim /etc/hostname

将原有内容删除,添加如下内容。

slave1

重启使之生效

reboot

(2)修改克隆出来的第二台主机名称为

slave2

ip

改为规划后的

ip地址

在虚拟机上打开克隆出来的第二台主机,编辑/etc/hostname文件

vim /etc/hostname

将原有内容删除,添加如下内容。

slave2

重启使之生效

reboot

5. SSH 无密码登录

在完全分布式模式下,集群内任意一台主机可免密登录集群内所有主机,即实现了两两免密登录。免密登录的设置方法和伪分布式模式的免密登录设置方法一样,分别在xx(自己的主机名)、slave1、slave2主机上生成公钥/私钥密钥对,然后将公钥发送给集群内的所有主机。
下面以 主节点 免密登录集群内其他主机,其他两台主机可仿照 主节点 的步骤完成免密码登录设置。

前置准备–删除旧的密钥:切换到

root

用户,然后

cd ~/.ssh

目录下执行

rm -rf *

每台主机都要做一次

1、在 主节点 生成密钥对

cd ~
ssh-keygen -t rsa

(一直回车)
2、进入~/.ssh目录

cd ~/.ssh

3、将公钥

id_rsa.pub

复制到 主节点、slave1、slave2:(

每台主机做一次

ssh-copy-id xx(自己的主机名)
ssh-copy-id slave1
ssh-copy-id slave2

4、验证免密登录:在 主节点 输入命令验证,注意

主机名称的变化

三台主机上都测试一遍

ssh xx
exitssh slave1
exitssh slave2
exit

**然后便可以通过

FinalShell

远程连接工具进行连接了。**

6. Hadoop 配置同步(已经有一些配置文件在hadoop伪分布式配置过了)

  1. 设置 hdfs-site.xml(不要直接复制,只改动局部!!!)<configuration><!-- HDFS 存储的基本目录 --><property><name>dfs.replication</name><value>2</value><description>Default block replication. The default is 1 unless overridden in the file.</description></property><!-- Secondary NameNode 目录 --><property><name>dfs.namenode.secondary.http-address</name><value>slave2:9868</value><description>The address for the secondary NameNode.</description></property></configuration>
  2. 设置 yarn-site.xml<configuration><!-- ResourceManager 地址配置 --><property><name>yarn.resourcemanager.hostname</name><value>localhost</value><!-- 改为主机名或IP地址 --><description>The hostname of the ResourceManager.</description></property><!-- 设置 ResourceManager 的 web 界面端口 --><property><name>yarn.resourcemanager.webapp.address</name><value>localhost:8088</value><!-- 改为主机名或IP地址 --><description>ResourceManager web interface.</description></property></configuration>
  3. 设置 mapred-site.xml<configuration><!-- 指定 MapReduce 框架使用 YARN --><property><name>mapreduce.framework.name</name><value>yarn</value><description>MapReduce should run as a YARN application</description></property><!-- ResourceManager 的地址 (YARN ResourceManager 节点的主机名或 IP 地址) --><property><name>yarn.resourcemanager.address</name><value>localhost:8032</value><!-- 替换 "namenode" 为实际 ResourceManager 的主机名或IP --><description>Address of the ResourceManager</description></property><!-- MapReduce JobHistory Server 的地址,用于查看作业历史 --><property><name>mapreduce.jobhistory.address</name><value>slave1:10020</value><!-- 替换 "namenode" 为实际 JobHistory Server 的主机名或IP --><description>Address of the JobHistory Server</description></property><!-- JobHistory Server 的 web 界面地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>slave1:19888</value><!-- 替换 "namenode" 为实际 JobHistory Server 的主机名或IP --><description>WebUI for JobHistory Server</description></property></configuration>
  4. 设置 workers 文件 设置 slaves 文件就是指定哪些主机是 Slave。cd /export/server/hadoop/etc/hadoopvim workers将原有内容删除,添加以下内容(千万注意,后面不要有空格,也不要有空行slave1slave2
  5. 分发配置 分发配置文件到其他节点: 现在你可以将已经配置好的 Hadoop 配置文件从 NameNode(主节点) 分发到其他节点(slave1slave2):# 进入 Hadoop 配置目录cd /export/server/hadoop/etc/hadoop/# 将配置文件分发到 slave1 和 slave2scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml hadoop-env.sh root@slave1:/export/server/hadoop/etc/hadoop/scp core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml hadoop-env.sh root@slave2:/export/server/hadoop/etc/hadoop/6、在主节点启动集群start-all.sh7、验证Hadoop进程 用jps命令分别在所有主机验证jps``````主节点 包含以下进程表示启动 Hadoop 成功NameNodeResourceManagerslave1slave2 主机分别执行 jps 命令,均包含以下进程表示启动 Hadoop 成功。(slave2 多一个SecondaryNameNodeNodeManagerDataNode8、显示有两个DataNode(slave1、slave2),成功!!!在这里插入图片描述

【注意事项】启动正常的不用看

在 Hadoop 集群中,格式化 NameNode 是一个非常重要且不可逆的操作,它会清除 NameNode 存储的元数据。因此,在集群已经运行时不应再次格式化 NameNode,否则会导致集群中已存在的数据节点(DataNode)丢失关联,进而无法连接到集群。

若是已经多次格式化,导致 slave1 和 slave2 没有了 DataNode,这是因为 DataNode 可能失去了与新的 NameNode 的元数据同步。你可以通过以下步骤恢复 DataNode 并重新连接它们。

修复步骤:
1、停止集群: 首先,停止整个集群,以便可以清理 DataNode 并重新配置。

/export/server/hadoop/sbin/stop-dfs.sh

2、清理 DataNode 数据目录: 格式化 NameNode 后,DataNode 的数据可能不再匹配 NameNode 的元数据。因此,你需要在每个 DataNode 上(slave1 和 slave2)清理存储 HDFS 块的目录。

slave1

slave2

上,执行以下命令清理 DataNode 数据目录:

rm -rf /export/server/hadoop/dfs/data/*

注意:执行这个操作会清除 DataNode 存储的 HDFS 块数据。因为你已经格式化了 NameNode,DataNode 需要重新同步,所以这是必要的步骤。

3、重启集群: 清理完成后,你可以重新启动集群,让 DataNode 重新与 NameNode 建立连接并开始同步。
在 NameNode 上执行:

/export/server/hadoop/sbin/start-dfs.sh

4、检查 DataNode 状态: 通过以下命令检查 DataNode 是否已经成功连接并在集群中注册:

/export/server/hadoop/bin/hdfs dfsadmin -report

此命令将显示所有已经注册的 DataNode。你应该看到

slave1

slave2

成功显示为 DataNode。

5、检查 Web UI: 打开 NameNode 的 Web 界面(http://ip:9870),在

DataNodes

” 部分中确认是否看到

slave1

slave2

被列为正常运行的 DataNode。


本文转载自: https://blog.csdn.net/TheMountainGhost/article/details/143189890
版权归原作者 TheMountainGhost 所有, 如有侵权,请联系我们删除。

“Hadoop完全分布式配置流程”的评论:

还没有评论