Как увеличить количество редукторов в алгоритме кластеризации купола

Я запускаю алгоритм кластеризации навеса, используя mahout.

Это команда, которую я запускаю через командную строку mahout.

mahout canopy -i /mahout/o_seqsparse/tfidf-vectors -o /mahout/o_canopy -dm org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure -ow -t1 100 -t2 50

Ниже приведено количество запущенных задач карты и уменьшения:

Количество запущенных задач карты --> 6

Количество запущенных задач сокращения --> 1

Но это занимает слишком много времени из-за одного редуктора. Я думаю, если я смогу увеличить количество задач сокращения, то я получу лучшую производительность.

Я также пробовал с увеличением уменьшения карты с помощью mapred-site.xml файла mapred.map.tasks mapred.reduce.tasks, но это не имеет никакого эффекта, все равно работает с 1 уменьшением.


person Vijay_Shinde    schedule 23.09.2014    source источник


Ответы (2)


Вы не указали версию mahout, которую используете. Но глядя на исходный код 0.4 здесь: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.mahout/mahout-core/0.4/org/apache/mahout/clustering/canopy/CanopyDriver.java

Вы можете найти 1 редуктор жестко закодирован. Я не думаю, что вы можете переопределить это.

РЕДАКТИРОВАТЬ

Для версии 0.9, как вы указали, проверьте здесь http://grepcode.com/file/repo1.maven.org/maven2/org.apache.mahout/mahout-core/0.9/org/apache/mahout/clustering/canopy/CanopyDriver.java/ в строке №. 354

job.setNumReduceTasks(1);

Измените это и постройте снова. Однако выходные данные карты должны быть отправлены на один редуктор. В случае кластеризации я не думаю, что вы выиграете от увеличения количества редюсеров.

person Abhiroop Sarkar    schedule 23.09.2014
comment
Я использую mahout 0.9 (т.е. hdp2) - person Vijay_Shinde; 23.09.2014
comment
Это правильный ответ, но неправильное предложение. Дело в том, что ДОЛЖЕН использоваться один редуктор для сравнения всех центров купола. Плохой алгоритм, я бы осмелился сказать, но это способ запустить его. - person vefthym; 23.09.2014
comment
Именно поэтому я указал. Однако в случае кластеризации я не верю, что вы выиграете, увеличив количество редукторов. Думаю, надо выделить жирным шрифтом! - person Abhiroop Sarkar; 23.09.2014
comment
+1 за объяснение. Измените это и постройте снова. однако его следует удалить ИМХО, так как это приведет к неправильным результатам, как вы предлагаете в предложении, выделенном жирным шрифтом. Дело не в том, что это не принесет большой пользы, но даст неверные результаты. - person vefthym; 23.09.2014
comment
Спасибо, Abhiroop. Как вы сказали, если я увеличу количество редукторов, это даст неверный результат. в настоящее время я запускаю кластеризацию навеса для 3 документов lac, в этом случае производительность очень низкая. что я должен делать. - person Vijay_Shinde; 24.09.2014

Как упоминает Абхируп Саркар в своем ответе, использование одного редуктора жестко закодировано. Однако дело не только в том, какую выгоду вы получите, используя один или несколько редюсеров. Вы не должны не использовать более одного редуктора, иначе алгоритм не будет работать правильно. Причина в том, что при использовании одного редуктора на этом этапе все центры купола будут сравниваться друг с другом, чтобы убедиться, что они не «слишком близко» друг к другу.

Итак, то, что вы правильно указали как узкое место этого алгоритма, изменить нельзя. На самом деле, если у вас слишком много центров купола, ему также не хватит памяти. ИМХО, не идеальное преобразование исходного последовательного алгоритма, поскольку он не может полностью использовать параллельное программирование, но это единственное доступное (и/или возможное) в MapReduce.

В двух словах, один редуктор используется для отвода центров куполов друг от друга. Использование большего количества редюсеров приведет к неверным результатам.

person vefthym    schedule 23.09.2014
comment
Это неплохое преобразование, это всего лишь две итерации кластеризации купола. В MapReduce нет другого способа выразить это. - person Thomas Jungblut; 23.09.2014
comment
Хорошо, я согласен с этим. Я сам тоже пытался найти параллельную версию этого алгоритма, но не смог найти точного решения. Я отредактирую свой ответ. - person vefthym; 23.09.2014
comment
Спасибо veftym. Есть ли другой способ кластеризации canapy. - person Vijay_Shinde; 24.09.2014
comment
@Vijay_Shinde К сожалению, в MapReduce нет другого способа сделать это, но есть также оригинальный последовательный алгоритм. У Weka есть реализация: weka.sourceforge.net/doc.dev/weka/clusterers/Canopy.html. - person vefthym; 24.09.2014