При дополнительном анализе, который включает в себя обсуждение с некоторыми незамеченными героями, мы решили применить вытеснение к очередям YARN в соответствии с нашим вариантом использования .
Задания в очереди Q1 будут вытеснены, когда происходит следующая последовательность событий:
- Очередь Q1 использует больше указанной емкости (Пример: задание LRJ использует больше ресурсов, чем указано в очереди).
- Внезапно задания на Q2 очередь запланирована (пример: неожиданно запускаются несколько небольших запущенных заданий).
Чтобы понять приоритет, прочитайте this и this
Ниже приведен пример конфигурации, которую мы используем в нашем скрипте AWS CloudFormation для запуска кластера EMR:
Конфигурация Capacity-Scheduler:
yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
yarn.scheduler.capacity.root.queues: Q1,Q2
yarn.scheduler.capacity.root.Q2.capacity: 60
yarn.scheduler.capacity.root.Q1.capacity: 40
yarn.scheduler.capacity.root.Q2.accessible-node-labels: "*"
yarn.scheduler.capacity.root.Q1.accessible-node-labels: "*"
yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100
yarn.scheduler.capacity.root.Q2.accessible-node-labels.CORE.capacity: 60
yarn.scheduler.capacity.root.Q1.accessible-node-labels.CORE.capacity: 40
yarn.scheduler.capacity.root.Q1.accessible-node-labels.CORE.maximum-capacity: 60
yarn.scheduler.capacity.root.Q2.disable_preemption: true
yarn.scheduler.capacity.root.Q1.disable_preemption: false
конфигурация yarn-site:
yarn.resourcemanager.scheduler.class: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
yarn.resourcemanager.scheduler.monitor.enable: true
yarn.resourcemanager.scheduler.monitor.policies: org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy
yarn.resourcemanager.monitor.capacity.preemption.monitoring_interval: 2000
yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill: 3000
yarn.resourcemanager.monitor.capacity.preemption.total_preemption_per_round: 0.5
yarn.resourcemanager.monitor.capacity.preemption.max_ignored_over_capacity: 0.1
yarn.resourcemanager.monitor.capacity.preemption.natural_termination_factor: 1
С учетом вышеизложенного, вы должны указать свои задания в определенной очереди на основе вашего варианта использования.