繁体   English   中英

纱:与集群大小相比,如何使用具有大量映射器的MapReduce作业

[英]YARN: How to run MapReduce jobs with lot of mappers comparing to cluster size

我有一个带有MapReduce作业的1节点Hadoop测试设置,该设置启动了96个映射器和6个reducer。 在迁移到YARN之前,此工作稳定但正常。 使用YARN,它开始挂起100%,大多数映射器处于“待定”状态。

工作实际上是6个子工作(每个16个映射器+ 1个reducer)。 此配置反映了生产过程的顺序。 所有这些都在单个JobControl下。 对于这种情况,与集群大小相比,节点数量少且作业量相对较大,是否需要检查任何配置或最佳实践?

当然,我与性能无关,而只是为开发人员传递这份工作的能力。 最坏的情况是我可以“减少工作”以分组子工作,但是我不想这样做,因为在生产中没有理由这样做,并且我希望测试和生产顺序相同。

当我迁移到YARN时,将Scheduler更改为FairScheduler,并且这是我运行Cloudera的唯一选择,并且Cloudera强烈建议您不要使用任何东西,而要使用fair scheduler 因此,切换到FIFO调度程序不是一种选择。

在我看来,除了“重新设计工作”之外,还有其他选择吗?

目前,通过禁用“每个用户的队列”逻辑(切换到单个队列)和使用分配文件限制正在运行的应用程序数量,解决了我的麻烦。 根据http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/FairScheduler.html的要求,这几乎可以为每个队列配置所需的任何内容。

以下是实际步骤:

  • yarn.scheduler.fair.user-as-default-queue设置为false。
  • 在Cloudera Manager中,更改了队列“默认”的动态资源分配,因此队列最多允许运行2个应用程序。 对于1节点设计测试工具已经足够好了。 在开源中,这将是对分配文件的更正。

现在可以根据需要工作了。 保留所有其他内容,包括默认策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM