Ich bin neu in der Welt der Karte zu reduzieren, ich habe einen Job ausgeführt und es scheint ewig dauern, um abzuschließen, da es eine relativ kleine Aufgabe ist, ich vermute, etwas ist nicht nach Plan gegangen. Ich benutze Hadoop-Version 2.6, hier sind einige Informationen, die ich dachte, könnte helfen. Die Map-Reduce-Programme selbst sind unkompliziert, daher werde ich diese hier nicht hinzufügen, es sei denn, jemand möchte, dass ich mehr Einblick gebe - der Python-Code, der für map reduce läuft, ist identisch mit dem hier - Ссылка . Wenn jemand einen Hinweis darauf geben kann, was falsch gelaufen ist oder warum das großartig wäre. Danke im Voraus.
%Vor%Das bekomme ich beim Ausführen des Programms:
%Vor% Wenn sich ein Job lange Zeit im Status ACCEPTED
befindet und nicht in den Status RUNNING
wechselt, kann dies folgende Gründe haben.
Nodemanager (Slave-Dienst) ist entweder tot oder kann nicht mit dem Ressourcenmanager kommunizieren. Wenn die Active nodes
in der Yar-Ressourcenverwaltung Web-Hauptseite gleich null ist, können Sie bestätigen, dass keine Knotenmanager mit dem Ressourcenmanager verbunden sind. Wenn dies der Fall ist, müssen Sie den Knotenmanager starten.
Ein weiterer Grund ist, dass möglicherweise andere Jobs ausgeführt werden, die den verfügbaren Slot belegen und kein Platz für neue Jobs vorhanden ist. Überprüfen Sie den Wert von Memory Total
, Memory used
, Vcores Total
, VCores Used
auf der Ressourcenmanager-Hauptseite.
Haben Sie Ihre Daten auf dieselbe Weise partitioniert, wie Sie sie abfragen? Grundsätzlich möchten Sie nicht alle Ihre Daten abfragen, was Sie gerade tun. Das könnte erklären, warum es so lange dauert, um zu laufen.
Sie möchten eine Teilmenge Ihres gesamten Datensatzes abfragen. Wenn Sie beispielsweise über Daten partitionieren, möchten Sie wirklich Abfragen mit einer Datumsbeschränkung schreiben, da sonst die Abfrage ewig dauert.
Wenn Sie können, machen Sie Ihre Abfrage mit einer Einschränkung für die Variablen, die zur Partitionierung Ihrer Daten verwendet werden.