我有一个1节点的hadoop测试设置和mapreduce作业,它启动96个mappers和6个reducer。在迁移到yarn之前,这个工作表现稳定但正常。随着Yarn开始挂起100%与大多数Map在'挂起'状态。
作业实际上是6个子作业(16个Map器+1个缩减器)。此配置反映了生产过程顺序。他们都在一个工作控制之下。与集群大小相比,对于节点数量较少、作业相对较大的情况,是否有需要检查的配置或最佳实践?
当然,我关心的不是性能,而是开发人员通过这项工作的能力。最坏的情况下,我可以'减少工作与'分组子作业,但我不想这样做,因为在生产上没有理由这样做,我希望测试和生产顺序是一样的。
当我迁移到yarn时,scheduler被更改为fairscheduler,目前它是我运行cloudera时的唯一选项,cloudera强烈建议不要使用除 fair scheduler
. 所以切换到fifo调度程序不是一个选择。
在我的情况下,除了“重新设计工作”还有其他选择吗?
1条答案
按热度按时间ffscu2ro1#
当前解决了禁用“按用户排队”逻辑(切换到单队列)和使用分配文件限制正在运行的应用程序数量的问题。根据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中,队列“default”的动态资源分配已更改,因此队列允许不超过2个正在运行的应用程序。足够好的单节点设计测试工具。在开放源码中,这将是对分配文件的更正。
现在可以根据需要工作了。其他一切包括默认策略都保持不变。