Количество картографов: Mapreduce против Sqoop

Количество картографов не может быть определено в программе mapreduce, так как общее количество картографов будет выбрано на основе входного разделения или размера. Но почему у нас есть возможность установить num-mappers на sqoop? Когда программа mapreduce берет число или мапперы самостоятельно и не позволяет нам их выбрать, почему sqoop разрешено это делать?


person AKC    schedule 30.01.2020    source источник


Ответы (1)


sqoop разделит ваш набор данных, используя столбец --split-by. Прочитайте, как это работает здесь. Также запустите sqoop в подробном режиме, чтобы лучше понять, как он работает. Он получит минимальное и максимальное значение разделенного столбца и разделит весь диапазон на части num-mappers, предполагая, что разделенный столбец равномерно распределен. Если он распределен неравномерно, sqoop разделит набор данных между картографами неравномерно (с перекосом).

И количество мапперов тоже настраивается, по крайней мере, в улье. Например, если вы используете Tez, вы можете настроить минимальный и максимальный размер группового разделения:

set tez.grouping.min-size=16777216; -- 16 MB min split
set tez.grouping.max-size=1073741824; -- 1 GB max split

Также вы можете настроить номер сплита и если возможно, Tez будет запускать близкое к нему количество мапперов (некоторые сплиты можно совмещать, что-то нельзя сплитить, но это повлияет на количество мапперов):

set tez.grouping.split-count=5000;

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

Для механизма исполнения MR:

set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB
set mapreduce.input.fileinputformat.split.maxsize=1073741824; -- 1 GB

Контролировать количество мапперов не так просто, т.к. зависит от многих факторов. Например, ORC разделен на уровне полосы, это означает, что вы не можете разделить меньшую полосу, чем одна полоса, и т. д. Подробнее о количестве картографов< /а>

person leftjoin    schedule 30.01.2020