java—在hadoop多节点(10x)集群中,reduce任务被太多获取失败消息停止

lb3vh1jj  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(343)

我使用hadoop1.0.3作为一个10桌面集群系统,每个系统都有ubuntu12.04lts 32位操作系统。jdk是7U75。每台机器都有2 gb ram和核心2-duo处理器。
对于一个研究项目,我需要运行一个类似于“字数统计”的hadoop作业。我需要对大量的数据集运行这个操作,例如至少1GB大小的数据集。
我正在尝试使用hadoop的示例jar hadoop-examples-1.0.3.jar来计算输入数据集的字数。不幸的是,我无法运行任何输入数据超过5-6MB的实验。
输入我使用纯文本共振峰故事书从https://www.gutenberg.org. 我还用了一些来自https://www.ietf.org. 所有输入都是.txt格式的英文书写。
我的系统可以为单个.txt文档提供正确的输出。但是,当它有超过1.txt的文件时,它开始不断地给出错误:

INFO mapred.JobClient: Task Id :      attempt_XXXX, Status : FAILED
Too many fetch-failures

当我使用单节点集群时,数据集也可以正常工作。我从以前的stackoverflow帖子中得到了一些解决方案,比如这个和这个,还有更多。但这些都不适用于我的案子。根据他们的建议,我更新了我的/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的博客中收集了属性值:“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的信息和真实的文章,请随时与我分享。
提前谢谢大家。

v64noz0r

v64noz0r1#

我的问题现在解决了。实际上问题出在我的网络设置上。不幸的是,由于我错误的网络设置,hadoop系统在reduce时找不到正确的机器。
正确的网络设置应为:
在/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

对于机器从属1,文件应包含:

slave1

相关问题