2014年-1-22日遇到了这个问题:
2014-01-22 14:36:18,346 WARN org.apache.hadoop.hdfs.DFSClient: Error Recovery for null bad datanode[0] nodes == null
2014-01-22 14:36:18,346 WARN org.apache.hadoop.hdfs.DFSClient: Could not get block locations. Source file "/root/gy/hadoop/tmp/mapred/system/jobtracker.info" - Aborting...2014-01-22 14:36:18,346 WARN org.apache.hadoop.mapred.JobTracker: Writing to file hdfs://hadoop8:9000/root/gy/hadoop/tmp/mapred/system/jobtracker.info failed!
2014-01-22 14:36:18,346 WARN org.apache.hadoop.mapred.JobTracker: FileSystem is not ready yet!
2014-01-22 14:36:18,351 WARN org.apache.hadoop.mapred.JobTracker: Failed to initialize recovery manager. org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /root/gy/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
可能解决的方案:
1)namenode format
先停hadoop;
到hadoop.tmp.dir这里配置路径清除文件;(hadoop.tmp.dir默认:/tmp/hadoop-${user.name})
然后hadoop namenode -format;
最后重启hadoop
2) 关闭防火墙
ufw disable
3) 修改 /etc/hosts文件
127.0.0.1 master 去掉。
4)这个问题是由于没有添加节点的原因,也就是说需要先启动namenode,再启动datanode,然后启动jobtracker和tasktracker。这样就不会存在这个问题了。
5)可能是写的配置文件错误了。
例如说有三个点 hadoop8 hadoop9 hadoop10
关于core-site.xml、hdfs-site.xml、mapred-site.xml,这些文件在三台机器上的内容实际上是一致的。
例如
core-site.xml
hadoop8 hadoop9 hadoop10这三台机器上的core-site.xml内容完全一致
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop8:9000</value>
<final>true</final>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/gy/hadoop/tmp</value>
</property>
</configuration>
hadoop8 hadoop9 hadoop10这三台机器上的hdfs-site.xml内容完全一致
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
hadoop8 hadoop9 hadoop10这三台机器上的mapred-site.xml内容完全一致
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hadoop8:9001</value>
</property>
</configuration>