0

Ich möchte viele Dateien für ein maschinelles Lernprojekt herunterladen. Diese Downloads dauern ziemlich lange und ich möchte sie beschleunigen.Gibt es eine Möglichkeit, einen verteilten Dateidownload über einen Hadoop-Cluster durchzuführen?

Ich habe einen Hadoop-Cluster, und ich dachte, dass ich davon profitieren könnte, um schnellere Downloads zu erhalten. Gibt es trotzdem den Datei-Download über den Cluster zu verteilen, um die Geschwindigkeit zu verbessern?

Antwort

0

Sie können Datei Details im folgende Format in einer separaten Metadatendatei wie unten hinzufügen, bevor eine Karten reduziert Job zu schreiben,

file1 ->http://myorg.com/test1.txt

file2 ->http://myorg.com/test2.txt

file3 ->http://myorg.com/test3.txt

Sie können einen mapreduce-Code mit LongWritable und Text als Eingabe aus der obigen Datei starten. und innerhalb der Funktion map() können Sie die URLs in Form von Werten für die Kartenfunktion erhalten und einen Code schreiben, um diese URLs zu treffen und diese Dateien über die normale Java-Verbindungsschnittstelle herunterzuladen.

Auf diese Weise wird die Last zum Herunterladen mehrerer Dateien auf verschiedene Mapper verteilt.

+0

Ich werde das untersuchen. Ich kenne MapReduce jedoch nicht. Ich habe in Spark geschrieben. Gibt es einen ähnlichen Weg, dies in Spark zu tun? –

+0

Konvertieren Sie die obige Metadaten-Datei in eine RDD und führen Sie den Download-Service in den Executoren aus. –

1

Wenn Sie eine Liste von Dateien und einen Sparkcontext zur Verfügung haben, können Sie einfach sparkContext.parallelize(fileList).foreach(downloadMethod(_)) tun, und es verteilt automatisch die Download-Aufgaben über die Executoren.

Verwandte Themen