最近在公司机房安装了Hadoop集群,使用start-all.sh启动机器的时候,发现日志文件记录了一个这样的ERROR
atjava.net.InetAddress.getLocalHost(InetAddress.java:1354)
atorg.apache.hadoop.metrics2.impl.MetricsSystemImpl.getHostname(MetricsSystemImpl.java:463)
atorg.apache.hadoop.metrics2.impl.MetricsSystemImpl.configureSystem(MetricsSystemImpl.java:394)
atorg.apache.hadoop.metrics2.impl.MetricsSystemImpl.configure(MetricsSystemImpl.java:390)
atorg.apache.hadoop.metrics2.impl.MetricsSystemImpl.start(MetricsSystemImpl.java:152)
atorg.apache.hadoop.metrics2.impl.MetricsSystemImpl.init(MetricsSystemImpl.java:133)
atorg.apache.hadoop.metrics2.lib.DefaultMetricsSystem.init(DefaultMetricsSystem.java:40)
atorg.apache.hadoop.metrics2.lib.DefaultMetricsSystem.initialize(DefaultMetricsSystem.java:50)
atorg.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1152)
atorg.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)
2011-08-24 10:08:53,632 ERRORorg.apache.hadoop.metrics2.impl.MetricsSystemImpl: Error gettinglocalhost name. Using 'localhost'...
java.net.UnknownHostException: Master: Master
虽然系统抛出这个错误,但是并不影响咋对hadoop的使用,就一直没管它。
但是今天运行hadoop fsck /-files -blocks 查看集群块的状态的时候,也同样抛出了这个异常,导致操作失败,因此我就注意这个问题了。
其实修正很简单。是由于配置错误引起的。以CentOS5.6例子
在/etc/sysconfig/network中把机器名配置成hostname.localdomain形式
在/etc/hosts中添加 127.0.0.1hostname.localdomain hostname
然后service network restart
再次输入hadoop fsck / -files -blocks 一切OK。