hadoop节点未用于地图任务

时间:2013-07-02 15:13:54

标签: hadoop hdfs cloudera

我注意到所有map和所有reduce任务都在单个节点(node1)上运行。我尝试创建一个文件,该文件由驻留在node2上的单个hdfs块组成。当运行mapreduce任务,其输入仅包含驻留在node2上的此块时,该任务仍在node1上运行。我的印象是hadoop优先考虑在包含输入数据的节点上运行任务。我发现日志文件中没有报告错误。知道这里可能会发生什么吗?

我有一个在kvms上运行的3节点集群,它是按照cloudera cdh4分布式安装指南创建的。

2 个答案:

答案 0 :(得分:1)

  

我的印象是,hadoop优先考虑运行任务   包含输入数据的节点。

嗯,可能有一个例外情况:

如果持有数据块的节点没有任何空闲的CPU插槽,则无法启动该特定节点上的任何映射器。在这种情况下,不是等待数据块将被移动到附近的节点并在那里进行处理。但在此之前,该框架将尝试在本地处理该块的副本(如果RF> 1)。

HTH

答案 1 :(得分:-1)

当你说“我尝试创建一个由驻留在node2上的单个hdfs块组成的文件”时,我不明白。我不认为你可以“指导”hadoop集群在某个特定节点中存储一些块。

Hadoop将根据输入的大小决定映射器的数量。如果输入大小小于hdfs块大小(默认我认为是64m),它将只生成一个映射器。

您可以将作业参数“mapred.max.split.size”设置为您想强制生成多个reducer的大小(默认情况下,在大多数情况下应该足够)。