我正在将Hadoop 1.0.3用于10台桌面集群系统,每个系统都有Ubuntu 12.04LTS 32位操作系统。 JDK为7 u 75.每台机器都有2 GB RAM,内核为2-duo处理器。
对于一个研究项目,我需要运行类似于"字数"的hadoop工作。我需要为大量数据集运行此操作,例如,大小至少为1 GB。
我正在尝试hadoop的示例jar hadoop-examples-1.0.3.jar用于计算输入数据集的单词。不幸的是,我无法运行任何超过5-6 MB输入数据的实验。
对于输入,我使用来自https://www.gutenberg.org的纯文本共振词库故事书。我还使用了https://www.ietf.org中的一些rfcs。所有输入都是.txt格式的英文写作。
我的系统可以为单个.txt文档提供正确的输出。但是,当它有超过1个.txt文件时,它开始连续发出错误:
INFO mapred.JobClient: Task Id : attempt_XXXX, Status : FAILED
Too many fetch-failures
当我使用单个节点群集时,数据集也正常工作。我之前的stackoverflow帖子中提供了一些解决方案,例如this one和this one以及其他一些解决方案。但这些都不适合我的情况。根据他们的建议,我更新了我的/usr/local/hadoop/conf/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>master:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
<property>
<name>mapred.task.timeout</name>
<value>1800000</value>
</property>
<property>
<name>mapred.reduce.slowstart.completed.maps</name>
<value>0.9</value>
</property>
<property>
<name>tasktracker.http.threads</name>
<value>90</value>
</property>
<property>
<name>mapred.reduce.parallel.copies</name>
<value>10</value>
</property>
<property>
<name>mapred.map.tasks</name>
<value>100</value>
</property>
<property>
<name>mapred.reduce.tasks</name>
<value>7</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/user/localdir</value>
</property>
</configuration>
在这个文件中,我从michael-noll's blog收集了属性的值:“mapred.local.dir”,“mapred.map.tasks”,“mapred.reduce.tasks”。我也设定了,
export HADOOP_HEAPSIZE=4000
来自conf / hadoop-env.sh文件。
由于我已经使用hadoop-1.0.3设置了所有10台机器的环境,如果有人可以在不更改hadoop版本的情况下给我解决方案,对我来说会更有帮助。
另外我想提一下我是hadoop的新手。我找到了很多关于hadoop的文章,但我可以修改任何文章作为这个主题的标准。如果有人知道有关hadoop的任何信息和真实的文章随时与我分享。
提前感谢大家。
答案 0 :(得分:0)
我的问题现在已经解决了。实际上问题出在我的网络设置中。不幸的是,由于我的网络设置错误,Hadoop系统无法在减少时找到合适的机器。
正确的网络设置应为:
在/ etc / hosts文件中,以下信息应包含:
localhost 127.0.0.1
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
master 192.168.x.x
slave1 192.168.x.y
....
在文件/ etc / hostname
中我们应该只提一下在hosts文件中写的主机名。例如,在主机中我们应该只在主机名文件中写一个单词。它是:
master
对于机器slave1,文件应包含:
slave1