加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在多个CPU核心上运行独立的Hadoop应用程序

发布时间:2020-12-15 00:37:41 所属栏目:Java 来源:网络整理
导读:我的团队使用Hadoop库构建了一个 Java应用程序,将一堆输入文件转换为有用的输出. 考虑到当前的负载,单个多核服务器在未来一年左右就可以正常运行.我们(还)没有必要选择多服务器Hadoop集群,但我们选择启动这个项目“正在准备”. 当我在命令行(或在eclipse或ne
我的团队使用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标志来控制它.

现在我也找到了here in this question所描述的解决方案.

解决方法

我不确定我是否正确,但是当你在本地模式下运行任务时,你不能拥有多个映射器/缩减器.

无论如何,要设置运行映射器和reducers的最大数量,请使用配置选项mapred.tasktracker.map.tasks.maximum和mapred.tasktracker.reduce.tasks.maximum默认情况下这些选项设置为2,所以我可能是对的.

最后,如果您想为多节点集群做好准备,请直接以完全分布式方式运行,但要让所有服务器(namenode,datanode,tasktracker,jobtracker,…)在一台机器上运行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读