hadoop启动错误:datanode、tasktracker无法启动和数据复制错误
hadoop startup errors: datanode, tasktracker won't start and data replication error
我正在尝试在一个由 5 台机器组成的(测试)集群上安装 Hadoop 1.2.1,其中一个节点用作 JobTracker、NameNode 和 Secondary NameNode。其余 4 台机器都是从机。
有两个问题。
1)在master的conf/masters和conf/slaves文件中,我分别提供了master和slave的IP地址。在从机上,masters 文件是空的,slaves 文件包含自己的 IP。
启动 hadoop (bin/start-all.sh) 时,TaskTracker 和 DataNode 不启动。我将这些机器的主机名放入 /etc/hosts 文件中,并尝试将它们的主机名也放入 masters 和 slaves 文件中。这没有任何区别——TaskTracker 和 DataNode 没有启动。
在启动 hadoop 服务时,我收到一条消息,提示已写入 TaskTracker 和 DataNode 日志。但奇怪的是,我没有在那个位置找到它们。以下是我收到的消息
10.6.80.4: starting datanode, logging to /home/ubuntu/hadoop-1.2.1/libexec/../logs/hadoop-ubuntu-datanode-dsparq-instance4.out
10.6.80.2: starting tasktracker, logging to /home/ubuntu/hadoop-1.2.1/libexec/../logs/hadoop-ubuntu-tasktracker-dsparq-instance2.out
2) 在JobTracker/NameNode 日志中,多次列出以下异常。
error: java.io.IOException: File <> could only be replicated to 0
nodes, instead of 1
这些问题的解决方案(在 Whosebug 上)建议重新格式化 hdfs 并检查 /etc/hosts 的条目。我尝试了他们两个,但这没有帮助。
请告诉我如何修复这些错误。提前谢谢你。
添加 core-site.xml 和 mapred-site.xml 的内容(所有机器上相同)
核心-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://10.6.80.21:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hdfs</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://10.6.80.21:8021</value>
</property>
</configuration>
应该将日志写入 *.out 文件,但它不包含太多信息。在 /var/log/hadoop/ 目录中查找 *.log 文件以获取有关 namenode 或其他恶魔的最新日志(如果您有基于 RPM 的安装,否则请查看 $HADOOP_HOME 日志文件夹)。考虑到上述问题,请确保所有节点中的 core-site.xml 都指定了名称节点的详细信息。类似地检查整个集群的mapred-site.xml,它应该包含jobtracker的地址。
还要确保在整个集群中维护主机名,或者您可以只使用 ip 地址。
hadoop.tmp.dir(我们在核心站点中提到的位置)必须在集群中创建,并且它应该具有适当的文件权限,以便您的 hdfs 用户可以执行 read/writes.
核心-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/loation/for/temp/dir</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenodehostname</value>
<description>The name of the default file system.</description>
</property>
Mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>jobtrackerhostname</value>
<description>The host and port that the MapReduce job tracker
</description>
</property>
如果您觉得上述所有属性都已在您的集群中设置并且仍然面临问题。请更新您的完整日志以及配置文件。
我正在尝试在一个由 5 台机器组成的(测试)集群上安装 Hadoop 1.2.1,其中一个节点用作 JobTracker、NameNode 和 Secondary NameNode。其余 4 台机器都是从机。
有两个问题。
1)在master的conf/masters和conf/slaves文件中,我分别提供了master和slave的IP地址。在从机上,masters 文件是空的,slaves 文件包含自己的 IP。
启动 hadoop (bin/start-all.sh) 时,TaskTracker 和 DataNode 不启动。我将这些机器的主机名放入 /etc/hosts 文件中,并尝试将它们的主机名也放入 masters 和 slaves 文件中。这没有任何区别——TaskTracker 和 DataNode 没有启动。
在启动 hadoop 服务时,我收到一条消息,提示已写入 TaskTracker 和 DataNode 日志。但奇怪的是,我没有在那个位置找到它们。以下是我收到的消息
10.6.80.4: starting datanode, logging to /home/ubuntu/hadoop-1.2.1/libexec/../logs/hadoop-ubuntu-datanode-dsparq-instance4.out
10.6.80.2: starting tasktracker, logging to /home/ubuntu/hadoop-1.2.1/libexec/../logs/hadoop-ubuntu-tasktracker-dsparq-instance2.out
2) 在JobTracker/NameNode 日志中,多次列出以下异常。
error: java.io.IOException: File <> could only be replicated to 0 nodes, instead of 1
这些问题的解决方案(在 Whosebug 上)建议重新格式化 hdfs 并检查 /etc/hosts 的条目。我尝试了他们两个,但这没有帮助。
请告诉我如何修复这些错误。提前谢谢你。
添加 core-site.xml 和 mapred-site.xml 的内容(所有机器上相同)
核心-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://10.6.80.21:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/hadoop/hdfs</value>
</property>
</configuration>
mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>hdfs://10.6.80.21:8021</value>
</property>
</configuration>
应该将日志写入 *.out 文件,但它不包含太多信息。在 /var/log/hadoop/ 目录中查找 *.log 文件以获取有关 namenode 或其他恶魔的最新日志(如果您有基于 RPM 的安装,否则请查看 $HADOOP_HOME 日志文件夹)。考虑到上述问题,请确保所有节点中的 core-site.xml 都指定了名称节点的详细信息。类似地检查整个集群的mapred-site.xml,它应该包含jobtracker的地址。
还要确保在整个集群中维护主机名,或者您可以只使用 ip 地址。 hadoop.tmp.dir(我们在核心站点中提到的位置)必须在集群中创建,并且它应该具有适当的文件权限,以便您的 hdfs 用户可以执行 read/writes.
核心-site.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/loation/for/temp/dir</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://namenodehostname</value>
<description>The name of the default file system.</description>
</property>
Mapred-site.xml
<property>
<name>mapred.job.tracker</name>
<value>jobtrackerhostname</value>
<description>The host and port that the MapReduce job tracker
</description>
</property>
如果您觉得上述所有属性都已在您的集群中设置并且仍然面临问题。请更新您的完整日志以及配置文件。