我希望有更多的地图任务来增加Mahout seqdirectory
工作的并行性。但每次我尝试时,它只创建一个地图任务。
在遇到此问题(总是一个地图任务)之前,我遇到了另一个问题(超出了GC开销限制)。因此我设置了更多的记忆来解决它。
当我发现只生成了一个map任务时,我配置了Hadoop配置文件(mapred-site.xml
,hadoop-env.sh
...)。我在mapred.map.tasks
中将20
设置为mapred-site.xml
。这没有用。
我发现,地图任务的数量取决于块的数量。在我的例子中,文件的总大小超过500 MB(大于64 MB的默认块大小)。我挖到了Mahout源代码(v0.9)。我找不到任何解决方案。
另外,由于我怀疑,问题可能是因为文件很小,我创建了两个大文件(2 500 MB文件),并使用seqdirectory
命令将它们加载到HDFS中。但是,仍然只启动了一个地图任务。
我不知道,如何解决这个问题。知道Hadoop和Mahout的人可以帮助我吗?
注意,我发现有人为这个pb做出了贡献。注意作为mahout-833 我正在从Mahout 0.9源代码中跟踪SequenceFileFromDirectory.java,试图找出原因。
以下是我的配置信息:job config file, hadoop config file(mapred-site.xml, hadoop-env.sh)