Ich nenne diese Art von Fehler einen typischen „Hamlet“-Fehler. Das ist die Art von Fehler, bei dem „die Fehlermeldung die gleiche ist, es aber im Internet verschiedene Lösungen gibt“, sodass wir uns fragen, welche davon der Kern des Problems ist. Schauen wir uns zunächst den Importbefehl an: [root@host25 ~]# sqoop export --connect "jdbc:mysql://172.16.xxx.xxx:3306/dbname?useUnicode=true&characterEncoding=utf-8" --username=root --password=xxxxx --table Regeltag --update-key Regelcode --update-mode allowinsert --export-dir /user/hive/warehouse/lmj_test.db/rule_tag --input-fields-terminated-by '\t' --input-null-string '\\N' --input-null-non-string '\\N' -m1 Dieser Importbefehl ist syntaktisch korrekt. Als nächstes kommt der Fehler: #Teil extrahieren 19/06/11 09:39:57 INFO mapreduce.Job: Die URL zum Verfolgen des Jobs: http://dthost25:8088/proxy/application_1554176896418_0537/ 19/06/11 09:39:57 INFO mapreduce.Job: Laufender Job: job_1554176896418_0537 19/06/11 09:40:05 INFO mapreduce.Job: Job job_1554176896418_0537 wird im Uber-Modus ausgeführt: false 19/06/11 09:40:05 INFO mapreduce.Job: map 0% reduzieren 0% 19/06/11 09:40:19 INFO mapreduce.Job: map 100% reduzieren 0% 19/06/11 09:45:34 INFO mapreduce.Job: Task-ID: attempt_1554176896418_0537_m_000000_0, Status: FEHLGESCHLAGEN AttemptID:attempt_1554176896418_0537_m_000000_0 Zeitüberschreitung nach 300 Sekunden 19/06/11 09:45:36 INFO mapreduce.Job: map 0% reduzieren 0% 19/06/11 09:45:48 INFO mapreduce.Job: map 100% reduzieren 0% 19/06/11 09:51:04 INFO mapreduce.Job: Aufgaben-ID: attempt_1554176896418_0537_m_000000_1, Status: FEHLGESCHLAGEN AttemptID:attempt_1554176896418_0537_m_000000_1 Zeitüberschreitung nach 300 Sekunden 19/06/11 09:51:05 INFO mapreduce.Job: map 0% reduzieren 0% 19/06/11 09:51:17 INFO mapreduce.Job: map 100% reduzieren 0% 19/06/11 09:56:34 INFO mapreduce.Job: Aufgaben-ID: attempt_1554176896418_0537_m_000000_2, Status: FEHLGESCHLAGEN AttemptID:attempt_1554176896418_0537_m_000000_2 Zeitüberschreitung nach 300 Sekunden 19/06/11 09:56:35 INFO mapreduce.Job: map 0% reduzieren 0% 19/06/11 09:56:48 INFO mapreduce.Job: map 100% reduzieren 0% 19/06/11 10:02:05 INFO mapreduce.Job: Job job_1554176896418_0537 ist mit dem Status FAILED fehlgeschlagen aufgrund von: Task fehlgeschlagen task_1554176896418_0537_m_000000 Der Auftrag ist fehlgeschlagen, da die Aufgaben fehlgeschlagen sind. failedMaps:1 failedReduces:0 19/06/11 10:02:05 INFO mapreduce.Job: Zähler: 9 Jobzähler Fehlgeschlagene Kartenaufgaben=4 Gestartete Kartenaufgaben=4 Andere lokale Kartenaufgaben = 3 Datenlokale Map-Aufgaben=1 Gesamtzeit aller Karten in belegten Slots (ms) = 2624852 Gesamtzeit, die alle Reduzierten in belegten Zeitschlitzen verbringen (ms) = 0 Gesamtzeitaufwand aller Kartenaufgaben (ms) = 1312426 Gesamtzahl der von allen Map-Aufgaben benötigten Vcore-Sekunden = 1312426 Gesamtanzahl Megabyte-Sekunden, die von allen Kartenaufgaben benötigt werden = 2687848448 19/06/11 10:02:05 WARN mapreduce.Counters: Die Gruppe FileSystemCounters ist veraltet. Verwenden Sie stattdessen org.apache.hadoop.mapreduce.FileSystemCounter 19/06/11 10:02:05 INFO mapreduce.ExportJobBase: 0 Bytes in 1.333,3153 Sekunden übertragen (0 Bytes/Sek.) 19/06/11 10:02:05 WARN mapreduce.Counters: Gruppe org.apache.hadoop.mapred.Task$Counter ist veraltet. Verwenden Sie stattdessen org.apache.hadoop.mapreduce.TaskCounter 19/06/11 10:02:05 INFO mapreduce.ExportJobBase: 0 Datensätze exportiert. 19/06/11 10:02:05 FEHLER tool.ExportTool: Fehler beim Export: Exportauftrag fehlgeschlagen! Dauer: 1340 s Aufgabe IDE_TASK_ADE56470-B5A3-4303-EA75-44312FF8AA0C_20190611093945147 ist abgeschlossen. Es ist ersichtlich, dass die Importaufgabe bei INFO mapreduce.Job: map 100% reduce 0% angehalten und für 5 Minuten angehalten wurde. Dann wurde die Aufgabe automatisch neu gestartet und blieb für weitere 5 Minuten hängen. Schließlich meldete die Aufgabe einen Timeout-Fehler. Offensichtlich ist die direkte Ursache für den Taskfehler ein Timeout, aber der Grund für das Timeout liegt darin, dass der MapReduce-Task des Importvorgangs hängen bleibt. Warum bleibt MapReduce hängen? Dies wird im Fehlerprotokoll nicht erwähnt, was bei der Suche nach der Ursache am problematischsten ist. Lassen Sie mich Ihnen zunächst das Ergebnis mitteilen. Nach langer Suche stellte ich fest, dass es daran lag, dass die Datenlänge einer Zeile die von MySQL festgelegte Feldlänge überschritt. Das heißt, beim Importieren der Zeichenfolge „Die Zeichenfolge ist sehr lang, sehr lang, sehr lang, sehr lang, sehr lang, sehr lang, sehr lang“ in das Feld varchar(50) wird die Aufgabe blockiert. Hier fasse ich die verschiedenen Gründe im Internet zusammen. Sie können sie einzeln überprüfen. Mögliche Gründe für das Hängenbleiben bei „Map 100 % – Reduzieren 0 %“: (am Beispiel des MySQL-Exports)1. Längenüberlauf. Die importierten Daten überschreiten die in der MySQL-Tabelle festgelegte Feldlänge Lösung: Setzen Sie die Feldlänge zurück 2. Codierungsfehler. Die importierten Daten liegen nicht im MySQL-Kodierungszeichensatz vor Lösung: Tatsächlich ist die Kodierung, die dem UTF-8-Zeichensatz in der MySQL-Datenbank entspricht, nicht utf8, sondern utf8mb4. Wenn Ihre importierten Daten Emoji-Ausdrücke oder ungewöhnliche chinesische Schriftzeichen enthalten, werden sie daher nicht importiert und blockiert. Dabei musst Du auf zwei Punkte achten: (1) In der Importanweisung ist UseUnicode=true&characterEncoding=utf-8 angegeben, was bedeutet, dass der Export im UTF-8-Format erfolgt. (2) In der Anweisung zur MySQL-Tabellenerstellung wird ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 festgelegt. 3. Nicht genügend Speicher. Möglicherweise ist die zu importierende Datenmenge zu groß oder der zugewiesene Speicher zu klein. Lösung: Importieren Sie entweder in Stapeln oder weisen Sie der Aufgabe mehr Speicher zu. 4. Der Hostname ist falsch. Lösung: Dies scheint ein Problem mit der Hostnamenkonfiguration zu sein 5. Der Primärschlüssel wird wiederholt. Lösung: Dies liegt daran, dass die von Ihnen importierten Daten doppelte Primärschlüsselwerte enthalten. Sie müssen die Daten entsprechend verarbeiten. Ergänzung: Lösung für MapReduce, das hängen bleibt, wenn Sqoop Daten aus der Datenbank nach HDFS exportiert Beim Exportieren von Daten aus der Datenbank während Sqoop bleibt MapReduce hängen Nach einer Suche auf Baidu scheint es, dass ich die Konfigurationselemente für Speicher und virtuellen Speicher in Yarn festlegen muss. Ich habe diese Elemente vorher nicht konfiguriert und es hat problemlos funktioniert. Aber dieses Mal scheint es in einem größeren Maßstab abzulaufen. Dieser Fehler kann auftreten, weil die jedem Docker zugewiesenen Speicher- und CPU-Ressourcen zu klein sind, um die Standardressourcenanforderungen zum Ausführen von Hadoop und Hive zu erfüllen. Die Lösung lautet wie folgt:Fügen Sie die folgende Konfiguration zu yarn-site.xml hinzu: <Eigenschaft> <name>Garn.NodeManager.Ressource.Speicher-MB</name> <Wert>20480</Wert> </Eigenschaft> <Eigenschaft> <name>Garn.scheduler.Minimum-Allocation-MB</name> <Wert>2048</Wert> </Eigenschaft> <Eigenschaft> <name>yarn.nodemanager.vmem-pmem-ratio</name> <Wert>2,1</Wert> </Eigenschaft> Fahren Sie Yarn einfach herunter und starten Sie es neu! ! ! Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur. Das könnte Sie auch interessieren:
|
<<: So installieren Sie Redis im Docker, legen das Kennwort fest und stellen eine Verbindung her
>>: Vue3 (Teil 2) Integration von Ant Design Vue
Inhaltsverzeichnis MySQL Inner Join, Left Join, R...
01. Befehlsübersicht Basisname - entfernt Verzeic...
Dieser Artikel stellt häufige Probleme von Xshell...
<br />Verwandte Artikel: 9 praktische Vorsch...
1. CDN Es ist die am häufigsten verwendete Beschl...
Inhaltsverzeichnis webpack5 Offizieller Start Bau...
Inhaltsverzeichnis Linux - Dateideskriptor, Datei...
Inhaltsverzeichnis 1. Nachfrage 2. Umsetzung 3. E...
Öffnen Sie das cPanel-Verwaltungs-Backend. Unter ...
Erstellen Sie zunächst ein spezielles Projektverz...
Popup-Nachrichten sind bei inländischen Internetd...
offizielle Tomcat-Website Tomcat entspricht einem...
Als Programmierer, der gerade Tomcat gelernt hat,...
Was ist Textumbruch um Bilder? Dies ist die Auswi...
JavaScript veröffentlicht mittlerweile jedes Jahr...