#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.