【问题标题】:hadoop fs -mkdir failed on connection exceptionhadoop fs -mkdir 连接异常失败
【发布时间】:2015-05-13 09:34:23
【问题描述】:

我一直在尝试在伪分布式模式下设置和运行 Hadoop。但是当我输入

bin/hadoop fs -mkdir 输入

我明白了

mkdir:从 h1/192.168.1.13 到 h1:9000 的调用因连接异常而失败:java.net.ConnectException:连接被拒绝;更多详情见:http://wiki.apache.org/hadoop/ConnectionRefused

这里是详细信息

核心站点.xml

<configuration>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/grid/tmp</value>
  </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://h1:9000</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>h1:9001</value>
    </property>

  <property>
    <name>mapred.map.tasks</name>
    <value>20</value>
  </property>
  <property>
    <name>mapred.reduce.tasks</name>
    <value>4</value>
  </property>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <property>
    <name>mapreduce.jobtracker.http.address</name>
    <value>h1:50030</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>h1:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>h1:19888</value>
  </property>

</configuration>

hdfs-site.xml

<configuration>

  <property>
    <name>dfs.http.address</name>
    <value>h1:50070</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address</name>
    <value>h1:9001</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>h1:50090</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/grid/data</value>
  </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
</configuration>

/etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.13 h1
192.168.1.14 h2
192.168.1.15 h3

在 hadoop namenode -format 和 start-all.sh 之后

1702 ResourceManager
1374 DataNode
1802 NodeManager
2331 Jps
1276 NameNode
1558 SecondaryNameNode

问题出现

[grid@h1 hadoop-2.6.0]$ bin/hadoop fs -mkdir input
15/05/13 16:37:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
mkdir: Call From h1/192.168.1.13 to h1:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused

问题出在哪里?

hadoop-grid-datanode-h1.log

2015-05-12 11:26:20,329 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = h1/192.168.1.13
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 2.6.0

hadoop-grid-namenode-h1.log

2015-05-08 16:06:32,561 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = h1/192.168.1.13
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 2.6.0

为什么 9000 端口不起作用?

[grid@h1 ~]$ netstat -tnl |grep 9000
[grid@h1 ~]$ netstat -tnl |grep 9001
tcp        0      0 192.168.1.13:9001           0.0.0.0:*                   LISTEN     

【问题讨论】:

  • 发布你的namenode和datanode日志。
  • 你的机器都是32位操作系统吗?
  • 您的 HDFS 实例是否在指定端口“9000”上运行?
  • 哇,“9000”端口好像没有打开,但是我还是不知道为什么,9001端口可以工作

标签: hadoop


【解决方案1】:

请启动 dfs 和 yarn。

[hadoop@hadooplab sbin]$ ./start-dfs.sh

[hadoop@hadooplab sbin]$ ./start-yarn.sh

现在尝试使用“bin/hadoop fs -mkdir input

当您在 VM 中安装 hadoop 然后将其关闭时,通常会出现此问题。当你关闭 VM 时,dfs 和 yarn 也会停止。所以每次重启VM都需要启动dfs和yarn。

【讨论】:

    【解决方案2】:

    先试试命令

    bin/hadoop dfs -mkdir input
    

    如果您正确地关注了 micheal-roll 的帖子,那么您应该没有任何问题。我怀疑无密码 ssh 在您的配置中不起作用,请重新检查。

    【讨论】:

    • [grid@h1 hadoop-2.6.0]$ bin/hadoop dfs -mkdir input 已弃用:不建议使用此脚本执行 hdfs 命令。而是使用 hdfs 命令。 15/05/14 09:45:27 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 在适用的情况下使用内置 java 类 mkdir: 从 h1/192.168.1.13 调用到 h1:9000 失败连接异常:java.net.ConnectException:连接被拒绝;更多详情见:wiki.apache.org/hadoop/ConnectionRefused
    • 那么你知道为什么端口 9000 没有打开吗?尝试重新启动一次系统。
    【解决方案3】:

    以下程序为我解决了这个问题:

    1. 停止所有服务。

    2. 删除 hdfs-site.xml 中指定的 namenode 和 datanode 目录。

    3. 创建新的namenode和datanode目录并相应修改hdfs-site.xml。

    4. 在 core-site.xml 中,进行以下更改或添加以下属性:

      fs.defaultFS hdfs://172.20.12.168/ fs.default.name hdfs://172.20.12.168:8020

    5. 在 hadoop-2.6.4/etc/hadoop/hadoop-env.sh 文件中进行如下修改:

      导出 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home

    6. 重启dfs、yarn和mr如下:

      开始-dfs.sh 启动纱线.sh mr-jobhistory-daemon.sh 启动历史服务器

    【讨论】:

      【解决方案4】:

      这个命令对我有用:

      hadoop namenode -format
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多