何时使用MultithreadedMapper

iCo*_*ode 3 hadoop

我什么时候应该使用MultithreadedMapper?

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

pyf*_*unc 6

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

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

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

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

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