"Hadoop namenode -format" get "java.net.UnknownException"

来源:互联网 发布:淘宝开店名称叫什么好 编辑:程序博客网 时间:2024/05/19 04:07

最近学习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 也遇到了问题,下篇文章继续

原创粉丝点击