У меня есть кластер с 1 ведущим и 4 подчиненными. Вот мой конфиг:
nodemanager
yarn.nodemanager.resource.memory-mb
= 13,5 Г
контейнер
yarn.scheduler.minimum-allocation-mb
= 32M
yarn.scheduler.maximum-allocation-mb
= 13,5 Г
mapreduce:
mapreduce.map.memory.mb
= 1696M
mapreduce.map.java.opts
= -Xmx1356m
mapreduce.reduce.memory.mb
= 3392M
mapreduce.reduce.java.opts
= -Xmx2713m
Я запускаю простой запрос улья:
select count(1) from my_table;
Я получаю 189 картперов и 1 сокращение.
192 контейнера.
В моем понимании, контейнеры = сумма (мапперы, редукторы, appmaster), но мапперы + редукторы = 190, 2 аппмастера?
Другой вопрос: в моей таблице много файлов в HDFS, а не в 189. В моем понимании входные файлы = мапперы, но это не так. Поэтому я предполагаю, что файлы объединяются перед вводом. Как я могу получить размер входного файла?
Я нахожу настройку:
mapred.max.split.size=256000000
, но 189 * 256MB! = 52GB (размер таблицы в HDFS). На самом деле я установил mapred.max.split.size = 2048000000, а количество картографов изменилось на 27. Я хочу знать, как это работает.
Последний вопрос: я хочу знать значение этой формы:
Надеюсь, вы понимаете, что я сказал. Большое спасибо!