Ich habe einen einfachen K-Means-Clustering-Code für Hadoop geschrieben (zwei separate Programme - Mapper und Reducer). Der Code arbeitet über einen kleinen Datensatz von 2d Punkten auf meiner lokalen Box. Es ist in Python geschrieben und ich möchte Streaming API verwenden.Iterative MapReduce
Ich möchte Vorschläge, wie Sie dieses Programm auf Hadoop am besten ausführen.
Nach jedem Lauf von Mapper und Reducer werden neue Zentren generiert. Diese Zentren werden für die nächste Iteration eingegeben.
Soweit ich sehen kann, muss jede mapreduce-Iteration ein separater mapreduce-Job sein. Und es sieht so aus, als würde ich ein weiteres Skript (Python/Bash) schreiben müssen, um die neuen Center aus HDFS nach jeder Reduktionsphase zu extrahieren und es dem Mapper wieder zuzuführen.
Irgendein einfacherer, weniger unordentlicher Weg? Wenn der Cluster zufällig einen fairen Scheduler verwendet, wird es sehr lange dauern, bis diese Berechnung abgeschlossen ist.