Как контролировать максимальное количество контейнеров, которые запускает один запрос Hive одновременно - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть таблица Hive, содержащая 1000 файлов в HDFS, каждый файл имеет размер около 128 МБ (один блок HDFS равен 128 МБ).Когда я запускаю select count (1) из этой таблицы, он будет работать в общей сложности 1000 картографов, что нормально.

Плохо то, что этот запрос Hive попытается запустить как можно больше мапперов одновременно, если ресурсы кластера доступны (максимум 1000, конечно).

Этодействительно плохо и уродливо, потому что он может занимать слишком много ресурсов одновременно, не оставляя другим приложениям ресурсов для использования и ждать их.1007 *

То есть, например, для 1000 картографов в любой момент , одновременно работает максимум 100 картографов, так что он не будет занимать слишком много ресурсов одновременно (Spark имеет такой контроль с--num-executors and --executor-cores параметры)

1 Ответ

0 голосов
/ 26 февраля 2019

Начиная с Hadoop 2.7.0, MapReduce предоставляет два варианта конфигурации для достижения этой цели:

  • mapreduce.job.running.map.limit (по умолчанию: 0, без ограничений)
  • mapreduce.job.running.reduce.limit (по умолчанию: 0, без ограничений)

MAPREDUCE-5583: Возможность ограничения работающей карты и сокращения задач

...