我使用MapReduce作业进行单节点Hadoop测试设置,启动96个映射器和6个减速器。在迁移到YARN之前,这项工作表现稳定但正常。随着YARN的开始,它开始100%挂起,其中大多数地图选择器正在等待'状态。
作业实际上是6个子作业(16个映射器+每个1个减速器)。此配置反映了生产过程顺序。所有这些都在单个JobControl下。对于具有少量节点和与群集大小相比较大的作业的情况,我是否需要检查或最佳实践?
当然,我不是关于性能,而是能够为开发人员传递这项工作的能力。最糟糕的情况是,我可以通过'来减少工作。分组子工作,但我不想这样做,因为在生产中没有理由这样做,我希望测试和生产顺序是一样的。
当我迁移到YARN时,调度程序已更改为FairScheduler,目前它是唯一的选项,因为我运行Cloudera并且Cloudera强烈建议不要使用除fair scheduler
之外的任何内容。因此,不能选择切换到FIFO调度程序。
除了重新设计工作'
之外,在我的情况下还有其他选择答案 0 :(得分:1)
目前解决了我的问题,即每个用户禁用排队'逻辑(切换到单个队列)并使用分配文件限制正在运行的应用程序的数量。根据{{3}},这允许为每个队列配置几乎所有需要的东西。
以下是实际步骤:
yarn.scheduler.fair.user-as-default-queue
设置为false。现在按需要工作。保留其他所有内容,包括默认策略不变。