Hadoop namenode -format“ get ”java.net.UnknownException

2019-03-28 13:59|来源: 网络

最近学习Hadoop,在配置过程中总是遇到问题。我是按照官网上的配置伪分布式的方式来进行配置的。

当执行到命令bin/hadoop namenode -format 的时候遇到了问题:

  1. STARTUP_MSG: Starting NameNode  
  2. STARTUP_MSG:   host = java.net.UnknownHostException: *****    
  3. STARTUP_MSG:   args = [-format]  
注释:上边打*的地方为我的主机的名字,这里不便透露

在网上找了很多方法,最后终于找到了解决方案:

首先在命令行中输入hostname来查看主机名:

  1. # hostname  
  2. localhost.localdomain  
也就是说,Hadoop在格式化HDFS的时候,通过hostname命令获取到的主机名是localhost.localdomain,然后在/etc/hosts文件中进行映射的时候,没有找到,看下我的/etc/hosts内容:

  1. # cat /etc/hosts  
  2. # Do not remove the following line, or various programs  
  3. # that require network functionality will fail.  
  4. 127.0.0.1               localhost.localdomain       localhost  
  5. ::1                   localhost6domain6 localhost6
也就说,通过localhost.localdomain根本无法映射到一个IP地址,所以报错了。

此时,我们查看一下/etc/sysconfig/network文件:

  1. NETWORKING=yes  
  2. NETWORKING_IPV6=yes  
  3. HOSTNAME=localhost.localdomain 
修改/etc/sysconfig/network中HOSTNAME的值为localhost,或者自己指定的主机名,保证localhost在/etc/hosts文件中映射为正确的IP地址

  1. # vim /etc/hosts  
  2. Do not remove the following line, or various programs  
  3. that require network functionality will fail.  
  4. 127.0.0.1               localhost      MyHostName  
  5. ::1                   localhost6domain6 localhost6

然后重新启动网络服务:

  1. # /etc/rc.d/init.d/network restart  
  2. Shutting down interface eth0:  [  OK  ]  
  3. Shutting down loopback interface:  [  OK  ]  
  4. Bringing up loopback interface:  [  OK  ]  
  5. Bringing up interface eth0:    
  6. Determining IP information for eth0... done.  
  7. [  OK  ]  
这时,再执行格式化HDFS命令bin/hadoop namenode -format 就可以显示正常了。

接下来执行bin/start-all.sh 也遇到了问题,下篇文章继续 http://www.linuxidc.com/Linux/2012-03/55664.htm

相关问答

更多
  • 很酷,我找到了解决方案。 停止所有运行的服务器 1) stop-all.sh 编辑文件/usr/local/hadoop/conf/hdfs-site.xml并添加下面的配置(如果缺失) dfs.data.dir /app/hadoop/tmp/dfs/name/data true d ...
  • Hadoop namenode -format Hadoop namenode目录包含fsimage和编辑文件,其中包含有关hadoop文件系统的基本信息,例如数据可用位置,用户创建的文件 如果格式化namenode,那么以上信息将从hdfs-site.xml中指定的namenode目录中删除为dfs.namenode.name.dir 但是你仍然拥有hadoop的数据,但不包含namenode元数据 Hadoop namenode -format Hadoop namenode directory con ...
  • 当hadoop试图解析DNS名称(srv-clc-04.univ-nantes.prive3)到一个ip地址时,抛出UnknownHostException 。 这失败了。 在配置文件中查找域名并将其替换为“localhost”。 (或更新DNS解析名称为一个IP地址) UnknownHostException is thrown when hadoop tries to resolve the DNS name (srv-clc-04.univ-nantes.prive3) to an ip addres ...
  • 它没有从导出的变量中获取类名。 您可以尝试从脚本中注释掉这一行并尝试: export HADOOP_OPTS=”-Djava.security.krb5.realm= -Djava.security.krb5.kdc=” Its not getting the class name from the exported variable. You can try commenting out this line from the script and try: export HADOOP_OPTS=”-Dj ...
  • 这很简单 - 格式化你的名字节点 mcbatyuk:hadoop bam$ bin/hadoop namenode -format Warning: $HADOOP_HOME is deprecated. 12/04/11 21:04:55 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STA ...
  • 您在hadoop-env.sh中错误地设置了JAVA_HOME。 给出java_home的绝对路径。你可以使用下面的命令找出java当前的java路径: alternatives --config java 它将提供您已安装的所有Java版本并选择正确的版本并将此java路径设置为hadoop-env.sh,如下所示: export JAVA_HOME=/usr/java/jdk1.*/bin 另一种方法是将$ JAVA_HOME设置为用户的.bashrc。 所以不需要设置为hadoop-env.sh ...
  • 下载osquery https://code.facebook.com/projects/658950180885092 并安装 发出这个命令osqueryi 当出现提示时,使用此sql命令查看所有正在运行的java进程并找到pids SELECT名称,路径,pid FROM进程,其中name =“java”; 你会在Mac上看到这样的东西 +------+-------------------------------------------------------------------------- ...
  • 1)用hdfs://192.168.100.101:9001替换fs.default.name的值 2)检查你的site.xml文件,无论你是否在其中错误地添加了空间 1) Replace value of fs.default.name with hdfs://192.168.100.101:9001 2) Check your site.xml files, whether in value you have mistakenly added space in between
  • 我假设您已屏蔽并共享您的网址 hdfs://vikasXXX.XX.XX.XX:X000 我认为它无法通过名称识别您的机器。 尝试使用localhost并检查它是否有效。 hdfs://localhost:8020 I assume that you have masked and shared your URL hdfs://vikasXXX.XX.XX.XX:X000 I think it is not recognizing your machine by name. Try using localh ...
  • 谢谢你的建议。 事实证明它是一个blooper,我只放了两个/而不是文件中给出的三个URI。 它现在有效! thanks for the suggestions. It turned out to be a blooper, I have put only two /'s instead of three as given in the document for the URI. It works now !