zoukankan      html  css  js  c++  java
  • Centos7-搭建hdfs启动时报java.net.BindException: Problem binding to [node01:9000] java.net.BindException异常

    今天用阿里的服务器搭了个伪分布式的HDFS,格式化后启动hdfs,发现只有dataNode启动了,查看启动日志发现异常:

    2019-01-22 15:54:50,507 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
    java.net.BindException: Problem binding to [node01:9000] java.net.BindException: Cannot assign requested address; For more details see: http://wiki.apache.org/hadoop/BindException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:720)
    at org.apache.hadoop.ipc.Server.bind(Server.java:424)
    at org.apache.hadoop.ipc.Server$Listener.<init>(Server.java:573)
    at org.apache.hadoop.ipc.Server.<init>(Server.java:2206)
    at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:944)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server.<init>(ProtobufRpcEngine.java:537)
    at org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:512)
    at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:789)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.<init>(NameNodeRpcServer.java:331)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createRpcServer(NameNode.java:627)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:600)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:765)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:749)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1446)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1512)

    针对找个异常,首先是要确定自己的配置文件有没有配置错误,检查了一遍没错呀。然后就去官网看看什么原因(点击查看官网关于此异常介绍),官网上的内容如下:

    根据官网介绍,出现这种情况要么是9000端口被占用了,要么就是hdfs在EC2上运行,那么hdfs服务将尝试使用公共主机名或IP显式绑定公共弹性IP地址,或者隐式使用“0.0.0.0”作为地址。

    首先看看9000端口有没有被占用,输入官网提供的指令: netstat -a -t --numeric-ports -p,发现9000端口并没有被占用,那么就是第二个原因了。百度了一下阿里的ECS服务器无法绑定公网IP的地址,细心的人应该能发现连接服务器的ip和你连接服务器后,输入ifconfig显示的ip地址不一致。如下图,可以看到网段都不一样:

    所以要解决这个BindException,直接修改/etc/hosts文件:

    内网IP地址 hostname1
    公网IP地址 hostname2

    注意:内网IP对应的hostname要和hadoop的配置文件core-site.xml的hostname对应。

    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://node01:9000</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/var/abc/hadoop/local</value>
    </property>

    修改完成后重新格式化,hdfs就可以正常启动了。

  • 相关阅读:
    (资源搜索类)几个好用的磁力搜索网站
    百度网盘不限速,直接获取直链
    百度网盘偷偷更新,免费也终于不限速了
    ES6新特性之箭头函数与function的区别
    [亲测可用]BCompare文件比较对比工具4.3.4绿色版
    Autofac 动态获取对象静态类获取对象
    Linq to SQL 语法整理(子查询 & in操作 & join )
    小程序监听页面滚动开始和滚动结束
    C# Task.Run 和 Task.Factory.StartNew 区别
    Entity Framework Core必须牢记的三条引用三条命令
  • 原文地址:https://www.cnblogs.com/zhangkaimin/p/10823454.html
Copyright © 2011-2022 走看看