何时使用多线程映射器

时间:2012-07-03 05:02:14

标签: hadoop

我什么时候应该使用MultithreadedMapper?

如果我使用MultithreadedMapper,我的应用程序是纯计算,我会更快地完成我的工作。 (没有延迟型映射器)

2 个答案:

答案 0 :(得分:6)

这取决于但我会说避免使用MultithreadedMapper作为第一个解决方案。

因此,最好使用单线程Mapper进行扩展,同时启动更多映射器,以便它们可以处理多个输入。您拥有的核心越多,您设置的mapred.tasktracker.map.tasks.maximum值就越高。当然,你需要更强大的机器。

我的理解是,如果您的I / O绑定类似于来自Web的获取页面,那么MultithreadedMapper非常有用,它具有比本地i / o更多的延迟。在这种情况下,使用MultithreadedMapper会有所帮助,因为您没有在单个网络I / O调用上被阻止,并且您可以在数据可供您使用时继续处理。

但是如果您要处理HDFS中的大数据,那么随着数据的本地化,它们很容易获取,如果计算是CPU绑定的,那么多核,多进程解决方案会更有帮助。

此外,您必须确保您的映射器是线程安全的。

答案 1 :(得分:3)

查看这篇文章12,了解何时使用和不使用映射器中的多个线程。建议增加每个节点上的映射槽数,而不是使用MultithreadedMapper。