Java 如何在本地(独立)模式下运行Hadoop而不出现ConnectionRejected异常?

Java 如何在本地(独立)模式下运行Hadoop而不出现ConnectionRejected异常?,java,hadoop,connection,Java,Hadoop,Connection,在“Hadoop:设置单节点集群”教程()之后,我尝试在本地(独立)模式下运行Hadoop,但我遇到了ConnectionRejected异常。当我尝试运行此命令时: bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+' 我得到以下信息: java.net.ConnectException: Call From 4295i/127.0.1.

在“Hadoop:设置单节点集群”教程()之后,我尝试在本地(独立)模式下运行Hadoop,但我遇到了ConnectionRejected异常。当我尝试运行此命令时:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output 'dfs[a-z.]+'
我得到以下信息:

java.net.ConnectException: Call From 4295i/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused;
随后是一个长堆栈跟踪,以及指向的链接如何避免此异常?


或者,如何执行以下3个步骤?(它们是上面链接中的说明选项)

  • 检查客户端使用的主机名是否正确

  • 检查客户端试图与之通信的IP地址,以确定主机名是否正确

  • 确保异常中的目标地址不是0.0.0.0-这意味着您实际上没有为客户机配置真正的地址


  • 以下是我在core-site.xml中的配置:

    <configuration>    
      <property>    
        <name>fs.defaultFS</name>    
        <value>hdfs://localhost:9000</value>    
      </property>    
    </configuration>
    
    <configuration>
      <property>
        <name>dfs.name.dir</name>    
        <value>/home/USERNAME/pseudo/dfs/name</value>    
      </property>    
      <property>    
        <name>dfs.data.dir</name>    
        <value>/home/USERNAME/pseudo/dfs/data</value>    
      </property>    
      <property>    
        <name>dfs.replication</name>    
        <value>1</value>    
      </property>    
    </configuration>
    
    
    fs.defaultFS
    hdfs://localhost:9000    
    
    以下是我在hdfs-site.xml中的配置:

    <configuration>    
      <property>    
        <name>fs.defaultFS</name>    
        <value>hdfs://localhost:9000</value>    
      </property>    
    </configuration>
    
    <configuration>
      <property>
        <name>dfs.name.dir</name>    
        <value>/home/USERNAME/pseudo/dfs/name</value>    
      </property>    
      <property>    
        <name>dfs.data.dir</name>    
        <value>/home/USERNAME/pseudo/dfs/data</value>    
      </property>    
      <property>    
        <name>dfs.replication</name>    
        <value>1</value>    
      </property>    
    </configuration>
    
    
    dfs.name.dir
    /home/USERNAME/pseudo/dfs/name
    dfs.data.dir
    /home/USERNAME/pseudo/dfs/data
    dfs.replication
    1.
    

    我对mapred-site.xml.template和warn-site.xml的配置是空的。

    我发现这些配置存在一些问题。您提到的存储namenode和datanode数据的路径不是绝对路径。它应该以斜杠(/)开头。我所做的更改如下所示。 另一个建议是最好将此目录保留在用户主目录之外

    <configuration>
    
    <property>
    
    <name>dfs.name.dir</name>
    
    <value>/home/USERNAME/pseudo/dfs/name</value>
    
    </property>
    
    <property>
    
    <name>dfs.data.dir</name>
    
    <value>/home/USERNAME/pseudo/dfs/data</value>
    
    </property>
    
    
    dfs.name.dir
    /home/USERNAME/pseudo/dfs/name
    dfs.data.dir
    /home/USERNAME/pseudo/dfs/data
    
    Namenode未运行。@Amal G Jose如何运行它?cd$HADOOP\u HOME/bin,sh stop-all.sh,sh start all。sh@AmalGJose我在$HADOOP_HOME/sbin中找到start-all.sh并运行了./start-all.sh。然后,我再次根据我的问题运行命令,得到了相同的异常。@Amal G Jose你还在吗?我在hdfs-site.xml中更新了我的配置,在主页前面有一个“/”。有点不对劲,因为当我运行start-all.sh,然后运行jps查看正在运行的进程时,namenode没有启动。仅启动NodeManager、DataNode、SecondaryNameNode和ResourceManager。请检查dfs.name.dir的目录权限。在开始之前执行namenode格式。我应该在哪个目录中查找dfs.name.dir?请按照以下步骤操作。使用本文档中提到的配置。清除hdfs-site.xml和core-site.xml中的所有conf。我无法执行第一行
    sudomkdir-p/app/hadoop/tmp
    ,因为我不在sudoers文件中。