【已解决】伪分布式Hadoop服务已经开启,但是无法访问http://localhost:9870(缺少NameNode进程)\http://localhost:8088

本文讲述了在启动Hadoop服务时遇到的问题,包括防火墙检查、hdfs-site.xml配置错误、缺少NameNode和ResourceManager进程,以及环境变量配置。作者提供了详细的解决步骤和相关命令,确保读者能成功启动并访问Hadoopweb界面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

一、问题描述

使用如下方法启动成功hadoop服务

进入相应文件夹

cd /usr/local/hadoop/

首先停止启动所有的节点,使用命令行启动stop-all.sh脚本

./sbin/stop-all.sh

解决方法是首先停止启动所有的节点,使用命令行启动stop-all.sh脚本:

./sbin/start-all.sh

使用jps命令查看当前hadoop运行
在这里插入图片描述

貌似没问题

其实这里就是有问题!!!后续解决方法里面说

继续打开http://localhost:9870,查看web界面

显示无法连接到
在这里插入图片描述

二、解决方法和问题分析

下面两个方法是在网上搜到的,大家可以先试试

  • 1.有博主建议查看防火墙的
    输入命令发现我的Linux并没有防火墙。。。所以不可能是防火墙问题
    详见:Ubuntu - 查看、开启、关闭和永久关闭防火墙

  • 2.也有博主建议 编辑配置文件hdfs-site.xml

    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
        <property>
    	<name>dfs.namenode.http-address</name>
    	<value>0.0.0.0:9870</value>
        </property>
    </configuration>
    

这些都有尝试 但是仍没有解决

最后我重新看了一下我部署伪分布式Hadoop的那篇博客:Hadoop安装搭建伪分布式教程(全面)吐血整理发现我前面启动节点时确实有问题!!!
在这里插入图片描述

PS:其实至少需要4个进程:Namenode、DataNode、SecondaryNameNOde、JPS

再会看我之前的那个命令,居然连NameNode都没有!!!我们知道http://localhost:9870就是来查看主节点情况的,居然连主节点NameNode都没有,当然会连不上呀~~

在这里插入图片描述

那么现在的思路就变成了:如何启动主节点NameNode(其实还有另外两个进程:NodeManagerResourceManager没有启动成功,这也和影响我们通过web界面对其资源管理器的查看等有影响,稍后我们一起说)

2.1:缺少NameNode进程

核心:初始化namenode。需要我们先执行如下命令

hdfs namenode -format

然后再启动hadoop服务(注意,再次启动前需要先停止之前启动的,否则会报错)

然后如下:
在这里插入图片描述

之后我们再次访问http://localhost:9870即可成功访问!🎆
在这里插入图片描述

2.1:没有ResourceManager和NodeManager

原因:只使用了start-dfs.sh命令(这个命令只会启动上述四个进程)

应该使用:命令start-all.sh(该命令是start-dfs.sh与start-yarn.sh这两个命令的合并)

这样才会启动6个进程:

在这里插入图片描述

补充:启动Hadoop时提示 start-all.sh(该命令是start-dfs.sh与start-yarn.sh这两个命令的合并):找不到命令 的解决方法:

这个问题出现的原因是环境变量没有配置
参考这篇博客的3.3.2步配置好环境变量:Hadoop安装搭建伪分布式教程(全面)吐血整理

于是我们可以成功访问hadoop的http://localhost:8088资源管理界面:
在这里插入图片描述

2.3:hadoop拒绝history通过19888端口连接查看已完成的job的日志

原因在于:通过start-all.sh启动hadoop各项节点后,historyserver并没有启动,需要手动启动,因此可以通过以下命令来手动启动historyserver,关闭命令也给出.

启动命令:

mr-jobhistory-daemon.sh start historyserver

关闭命令:

mr-jobhistory-daemon.sh stop historyserver

可能会出现下面两个警告,没有关系
在这里插入图片描述
再次访问:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是瑶瑶子啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值