2013-12-11 89 views
0

我有4个节点,每个节点有24个CPU和7个磁盘。在我从本地500GB文件复制的每个节点上。所以现在我有4个文件。每个文件的块位于单个节点上,分布在所有磁盘上。hadoop的最佳配置?

什么是Hadoop的mapreduce这个设置的最佳配置(我只用于这些文件)?我试过将mapred.map.tasks设置为96,但hadoop只创建4个任务(每个节点一个)。

+0

这个问题似乎已经在hadoop邮件列表上得到解答。请提供最终答案并接受它。 –

回答

0

您正在为您正在尝试执行的操作设置错误的配置参数。您需要改为mapred.tasktracker.map.tasks.maximum。你所设定的是一份工作的地图任务的数量......在大多数情况下,你不应该修改它。 Hadoop默认将mapred.map.tasks设置为块的数量,所以只需保留它即可。

一下添加到mapred-site.xml

<property> 
    <name>mapred.tasktracker.map.tasks.maximum</name> 
    <value>24</value> 
</property> 

改变之后,您需要重新启动的TaskTracker。 要验证您是否进行了更改,请查看JobTracker Web界面。你应该看到顶部附近的东西,告诉你有多少地图插槽已打开。看到它是96,而不是16.


资源分配的工作方式是您的MapReduce集群有许多地图插槽和减少插槽。作业运行时,作业将消耗地图插槽。如果作业具有比地图插槽更多的地图任务(非常典型),那么您的地图任务将排在第一个运行的地图任务之后并稍后运行。

这就是你看到每个节点每个获得4个任务。它最终将贯穿所有这些。但是,你说得对,24核心(我认为是2个超线程CPU)和7个磁盘,你想要更多的插槽。我听说每个磁盘有1个经验法则,每个核心有1个,每个核心有1个(有超线程),但是没有真正的科学背景,它完全依赖于工作负载。如果你真的想获得最佳性能,只需尝试不同的值。我建议每个节点的值在10到24之间。