我的团队使用Hadoop库构建了一个Java应用程序,将一堆输入文件转换为有用的输出。
考虑到当前负载,单个多核服务器在未来一年左右可以胜任。我们目前还没有必要使用多台服务器的Hadoop集群,但我们选择开始这个项目是为了"未雨绸缪"。
当我在命令行上运行这个应用程序(或者在eclipse或netbeans中运行)时,我还没有能够说服它同时使用超过一个map和/或reduce线程。 鉴于这个工具非常CPU密集,这种"单线程性"是目前的瓶颈。
当我在netbeans分析器中运行它时,我确实看到该应用程序启动了几个线程来执行各种任务,但只有一个map/reduce正在运行。
输入数据由几个输入文件组成,因此Hadoop至少应该能够同时运行每个输入文件1个线程用于映射阶段。
我该怎么做才能至少有2个甚至4个活动线程运行(对于这个应用程序的大部分处理时间应该是可能的呢)?
我希望这只是我忽视了的一些非常愚蠢的东西。
我刚找到这个: https://issues.apache.org/jira/browse/MAPREDUCE-1367 这实现了我在Hadoop 0.21中寻找的功能。 它引入了标志mapreduce.local.map.tasks.maximum来控制它。
目前,我还发现了这个问题中描述的解决方案。
当我在命令行上运行这个应用程序(或者在eclipse或netbeans中运行)时,我还没有能够说服它同时使用超过一个map和/或reduce线程。 鉴于这个工具非常CPU密集,这种"单线程性"是目前的瓶颈。
当我在netbeans分析器中运行它时,我确实看到该应用程序启动了几个线程来执行各种任务,但只有一个map/reduce正在运行。
输入数据由几个输入文件组成,因此Hadoop至少应该能够同时运行每个输入文件1个线程用于映射阶段。
我该怎么做才能至少有2个甚至4个活动线程运行(对于这个应用程序的大部分处理时间应该是可能的呢)?
我希望这只是我忽视了的一些非常愚蠢的东西。
我刚找到这个: https://issues.apache.org/jira/browse/MAPREDUCE-1367 这实现了我在Hadoop 0.21中寻找的功能。 它引入了标志mapreduce.local.map.tasks.maximum来控制它。
目前,我还发现了这个问题中描述的解决方案。