• [HDFS] 启动HDFS缺少服务


    启动Hadoop后使用JPS命令查看进程,发现只有NameNode和NodeManger。

    原因:格式化两次namenode。导致namenode和datanode中的CID不一致。

    $ hadoop namenode -format

    解决方法:修改namenode和datanode的CID为同一个或者清除文件夹(先停止Hadoop所有服务)。

    上述方法执行完没有结果则查看端口号是否被占用。

    第一种

    查看Hadoop下的配置文件core-site.xml内容:

    $ vim /opt/hadoop2.6.5/etc/hadoop/core-site.xml
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/huasheng/app/hadoop-2.6.5/tmp/</value>
        </property>

    发现临时目录在/home/huasheng/app/hadoop-2.6.5/tmp/ 下

    $ cd /home/huasheng/app/hadoop-2.6.5/tmp/dfs
    $ ls
    data  name  namesecondary

    #name: namenode的信息
    #data: datanode的信息

    #查看name下的VERSION信息
    $ cat name/current/VERSION

    #Fri Mar 15 10:12:21 CST 2019
    namespaceID=596602248
    clusterID=CID-b604bc78-8f8a-4cf6-a02b-3ac257ebef93
    cTime=0
    storageType=NAME_NODE
    blockpoolID=BP-139131966-192.168.142.129-1552615941181
    layoutVersion=-60

    #修改data下的clusterID
    $ vim data/current/VERSION

    #Fri Mar 15 10:37:33 CST 2019
    storageID=DS-a9a026d4-3833-4086-91c4-17e68c157add
    clusterID=CID-b604bc78-8f8a-4cf6-a02b-3ac257ebef93
    cTime=0
    datanodeUuid=b3848163-9ee4-4192-bc58-c96184c3dddd
    storageType=DATA_NODE
    layoutVersion=-56

    启动Hadoop即可。

    第二种

    直接删除临时目录下文件,格式化namenode节点。

    $ rm -rf /hadoop-2.6.5/tmp/
    $ hadoop namenode -format

    启动Hadoop即可。

    但是我在测试的时候使用上述方法之后仍然没有解决。

    #打开日志文件
    $ cd /hadoop-2.6.5/logs/

    #日志信息使用 类型-用户名-服务-hostname.log 的形式存储。比如datanode节点:
    hadoop-huasheng-datanode-huas.log

    查看后发现如下一段:

    java.net.BindException: Port in use: 0.0.0.0:50090
        at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:892)
        at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:828)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.initialize(SecondaryNameNode.java:276)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.<init>(SecondaryNameNode.java:192)
        at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.main(SecondaryNameNode.java:671)
    Caused by: java.net.BindException: 地址已在使用
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:433)
        at sun.nio.ch.Net.bind(Net.java:425)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
        at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:887)
        ... 4 more

    查看端口是否被占用,如果被占用则杀掉对应进程即可

    $ netstat -anp | grep 50090
  • 相关阅读:
    Vmware
    Centos8
    Jmeter系列(37)- 详解 ForEach控制器
    【解决】k8s 1.15.2 镜像下载方案
    【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter
    【解决】venv 的名字在 zsh prompt 中不显示
    【解决】could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
    《Linux 性能优化实战—倪朋飞 》学习笔记 CPU 篇
    【解决】MongoDB 线上业务处理,数据去重脚本实现
    【解决】docker 容器中 consul集群问题处理
  • 原文地址:https://www.cnblogs.com/x-you/p/10536301.html
Copyright © 2020-2023  润新知