Количество картографов: Mapreduce vs Sqoop - PullRequest
0 голосов
/ 30 января 2020

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

1 Ответ

0 голосов
/ 30 января 2020

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

И число сопоставителей также настраивается, по крайней мере, в улье. Например, если вы используете 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

Контролировать количество картографов не так просто, потому что зависит от многих факторов. Например, OR C разбивается на уровне полосы, это означает, что вы не можете разделить меньше, чем одна полоса и т. Д. c. Узнайте больше о число картографов

...