Как я могу изменить физическую память в задании mapreduce / hive?

#hive #mapreduce #amazon-emr

#улей #mapreduce #amazon-emr

Вопрос:

Я пытаюсь выполнить запрос Hive INSERT OVERWRITE в кластере EMR с 40 рабочими узлами и одним главным узлом.

Однако во время выполнения INSERT OVERWRITE запроса, как только я доберусь до
Stage-1 map = 100%, reduce = 100%, Cumulative CPU 180529.86 sec
в этом состоянии я получаю следующую ошибку:

 Ended Job = job_1599289114675_0001 with errors
Diagnostic Messages for this Task:
Container [pid=9944,containerID=container_1599289114675_0001_01_041995] is running beyond physical memory limits. Current usage: 1.5 GB of 1.5 GB physical memory used; 3.2 GB of 7.5 GB virtual memory used. Killing container.
Dump of the process-tree for container_1599289114675_0001_01_041995 :
  

Я не уверен, как я могу изменить номер физической памяти 1,5 ГБ. В моих конфигурациях я не вижу такого числа, и я не понимаю, как вычисляется это число в 1,5 ГБ.
Я даже пытался изменить "yarn.nodemanager.vmem-pmem-ratio":"5" на 5, как предлагалось на некоторых форумах. Но независимо от этого изменения я все равно получаю ошибку.

Так начинается задание:

 Number of reduce tasks not specified. Estimated from input data size: 942
Hadoop job information for Stage-1: number of mappers: 910; number of reducers: 942
  

И вот как выглядит мой файл конфигурации для кластера. Я не могу понять, какие настройки мне нужно изменить, чтобы не столкнуться с этой проблемой. Может ли это также быть связано с настройками Tez? Хотя я не использую его в качестве движка.

Любые предложения будут с благодарностью приняты, спасибо.

Ответ №1:

При открытии консоли hive добавьте к команде следующее

 --hiveconf mapreduce.map.memory.mb=8192 --hiveconf mapreduce.reduce.memory.mb=8192 --hiveconf mapreduce.map.java.opts=-Xmx7600M
  

Если вы все еще получаете ошибку Java heap, попробуйте увеличить до более высоких значений, но убедитесь, что mapreduce.map.java.optsне превышает mapreduce.map.memory.mb.