Поддержка Preemption с Tez вместе с планировщиком пряжи FairShare поддерживается? - PullRequest
0 голосов
/ 27 июня 2018

В последнее время мы переключаем наш кластер из 10 узлов с MapReduce на Tez, и с тех пор у нас возникают проблемы с управлением ресурсами. Кажется, выгрузка не работает, как ожидалось:

  1. приходит очень трудоемкая работа, она получает все бесплатные ресурсы
  2. приходит второе задание и ожидает освобождения ресурсов заданием1
  3. job2 получает очень мало ресурсов (5%) в течение длительного времени и продолжает расти очень медленно, но большую часть времени никогда не достигает справедливой доли.

Я предполагаю, что механизм вытеснения, используемый планировщиком пряжи FairShare, не работает должным образом, и ресурсы назначаются на job2 только после выполнения некоторых контейнеров job1.

Я изучил Tez doc и мог подумать, что Tez был бы разработан с планировщиком емкости в качестве планировщика де-факто, но не может найти никакой помощи для планировщика FairShare.

Используются некоторые переменные conf, которые могут помочь:

hive.server2.tez.default.queues=default
hive.server2.tez.initialize.default.sessions=false
hive.server2.tez.session.lifetime=162h
hive.server2.tez.session.lifetime.jitter=3h
hive.server2.tez.sessions.init.threads=16
hive.server2.tez.sessions.per.default.queue=10
hive.tez.auto.reducer.parallelism=false
hive.tez.bucket.pruning=false
hive.tez.bucket.pruning.compat=true
hive.tez.container.max.java.heap.fraction=0.8
hive.tez.container.size=-1
hive.tez.cpu.vcores=-1
hive.tez.dynamic.partition.pruning=true
hive.tez.dynamic.partition.pruning.max.data.size=104857600
hive.tez.dynamic.partition.pruning.max.event.size=1048576
hive.tez.enable.memory.manager=true
hive.tez.exec.inplace.progress=true
hive.tez.exec.print.summary=false
hive.tez.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat
hive.tez.input.generate.consistent.splits=true
hive.tez.log.level=INFO
hive.tez.max.partition.factor=2.0
hive.tez.min.partition.factor=0.25
hive.tez.smb.number.waves=0.5
hive.tez.task.scale.memory.reserve-fraction.min=0.3
hive.tez.task.scale.memory.reserve.fraction=-1.0
hive.tez.task.scale.memory.reserve.fraction.max=0.5
yarn.scheduler.fair.preemption=true
yarn.scheduler.fair.preemption.cluster-utilization-threshold=0.7
yarn.scheduler.maximum-allocation-mb=32768
yarn.scheduler.maximum-allocation-vcores=4
yarn.scheduler.minimum-allocation-mb=2048
yarn.scheduler.minimum-allocation-vcores=1
yarn.resourcemanager.scheduler.address=${yarn.resourcemanager.hostname}:8030
yarn.resourcemanager.scheduler.class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler
yarn.resourcemanager.scheduler.client.thread-count=50
yarn.resourcemanager.scheduler.monitor.enable=false
yarn.resourcemanager.scheduler.monitor.policies=org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy
...