Nie*_*jes 7 java command-line multithreading hadoop mapreduce
我的团队使用Hadoop库构建了一个Java应用程序,将一堆输入文件转换为有用的输出.考虑到当前的负载,单个多核服务器在未来一年左右就可以正常运行.我们(还)没有必要选择多服务器Hadoop集群,但我们选择启动这个项目"正在准备".
当我在命令行(或在eclipse或netbeans)上运行这个应用程序时,我还没有能够说服它一次使用更多的那个地图和/或减少线程.鉴于该工具非常占用CPU,这种"单线程"是我目前的瓶颈.
在netbeans探查器中运行它时,我确实看到应用程序为各种目的启动了几个线程,但同一时刻只运行一个map/reduce.
输入数据由几个输入文件组成,因此Hadoop至少应该能够为映射阶段同时为每个输入文件运行1个线程.
我该怎么做至少有2个甚至4个活动线程在运行(这个应用程序的大部分处理时间应该可以)?
我期待这是一个非常愚蠢的东西,我忽略了.
我刚刚发现了这个:https://issues.apache.org/jira/browse/MAPREDUCE-1367 这实现了我在Hadoop中寻找的功能0.21它引入了标志mapreduce.local.map.tasks.maximum来控制它.
我不确定我是否正确,但是当你在本地模式下运行任务时,你不能有多个映射器/减速器.
无论如何,要设置运行映射器和缩减器的最大数量,请使用配置选项mapred.tasktracker.map.tasks.maximum,mapred.tasktracker.reduce.tasks.maximum默认情况下这些选项设置为2,所以我可能是对的.
最后,如果你想为多节点集群做好准备,那就直接以完全分布的方式运行它,但让所有服务器(namenode,datanode,tasktracker,jobtracker,...)在一台机器上运行
| 归档时间: |
|
| 查看次数: |
7694 次 |
| 最近记录: |