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

06-18 1218阅读

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

一、问题描述

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

进入相应文件夹

cd /usr/local/hadoop/

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

./sbin/stop-all.sh

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

./sbin/start-all.sh

使用jps命令查看当前hadoop运行

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

貌似没问题

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

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

显示无法连接到

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

二、解决方法和问题分析

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

  • 1.有博主建议查看防火墙的

    输入命令发现我的Linux并没有防火墙。。。所以不可能是防火墙问题

    详见:Ubuntu - 查看、开启、关闭和永久关闭防火墙

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

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

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

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

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

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

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

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

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

    2.1:缺少NameNode进程

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

    hdfs namenode -format
    

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

    然后如下:

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

    之后我们再次访问http://localhost:9870即可成功访问!🎆

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

    2.1:没有ResourceManager和NodeManager

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

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

    这样才会启动6个进程:

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

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

    这个问题出现的原因是环境变量没有配置好

    参考这篇博客的3.3.2步配置好环境变量:Hadoop安装搭建伪分布式教程(全面)吐血整理

    于是我们可以成功访问hadoop的http://localhost:8088资源管理界面:

    【已解决】伪分布式Hadoop服务已经开启,但是无法访问http://localhost:9870(缺少NameNode进程)\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
    

    可能会出现下面两个警告,没有关系

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

    再次访问:

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

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]