作业失败还是服务器崩溃?如果您的作业由于节点上的内存不足而失败,那么您可以减少最大映射数和缩减器的数量,而JVM选择它们的数量,这样就永远不会发生。通常必须根据您的数据节点特定的硬件来增加mapred.child.java.opts(默认值为200Xmx)。
http://allthingshadoop.com/2010/04/28/map-reduce-tips-tricks-your-first-real-
cluster/
可以在Namenode上设置最大任务,也可以在可能具有不同硬件配置的数据节点上覆盖(设置为final)。为映射器和化简器设置了最大任务。要计算此值,它基于CPU(内核)和您拥有的RAM数量,以及您在mapred.child.java.opts中设置的JVM
max(默认值为200)。Datanode和Tasktracker分别设置为1GB,因此对于8GB的计算机,可以将mapred.tasktracker.map.tasks.maximum设置为7,将mapred.tasktracker.reduce.tasks.maximum设置为7,而mapred.child.java
.opts设置为-400Xmx(假设8个内核)。请注意,如果您只有1个CPU和1个内核,那么这些最大任务是由CPU完成的,那么现在该为数据节点获取新硬件或将掩码任务设置为1了。
默认情况下,只有一个化简器,您需要将mapred.reduce.tasks配置为多个。该值应介于0.95到1.75倍之间,该值是每个节点的最大任务数乘以数据节点的数目。因此,如果您有3个数据节点并且设置的最大任务数为7,则在25到36之间进行配置。
如果您的服务器因内存不足问题而崩溃,那么HADOOP_HEAPSIZE就是在其中用于进程堆(而不是任务的执行)的地方。
最后,如果您的工作花了那么长时间,您可以检查一下mapred.compress.map.output是否还有另一个不错的配置。将此值设置为true应该(在压缩时间与传输时间之间取得平衡)可以极大地加快化简机的复制速度,尤其是在处理大型数据集时。通常,工作确实需要时间,但也有一些选项可以调整以帮助加快工作速度=
8 ^)



