Hadoop HADOOP_CLASSPATH Fragen
Diese Frage bezieht sich nicht auf die Verteilung jar-Dateien in das gesamte cluster für die Arbeiter zu verwenden.
Er bezieht sich auf die Angabe einer Anzahl von zusätzlichen Bibliotheken die auf der client-Maschine. Um genauer zu sein: ich versuche, führen Sie den folgenden Befehl, um den Inhalt einer SequenceFile:
/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file
Wirft er mir diese Fehlermeldung: text: java.io.IOException: WritableName can't load class: util.io.DoubleArrayWritable
Habe ich einen beschreibbaren Klasse namens DoubleArrayWritable. In der Tat , auf einem anderen computer funktioniert alles gut.
Ich versucht, die HADOOP_CLASSPATH
enthalten die jar mit der Klasse, aber keine Ergebnisse. Eigentlich, wenn Sie ausführen:
/path/to/hadoop/script classpath
Dem Ergebnis nicht enthalten die jar-Datei die ich Hinzugefügt HADOOP_CLASSPATH.
Die Frage ist: wie geben Sie zusätzliche Bibliotheken beim ausführen von hadoop (durch die zusätzliche Bedeutung, die anderen Bibliotheken als diejenigen, die die hadoop-Skript enthält automatisch in den Klassenpfad)
Einige weitere Infos die vielleicht helfen:
- Kann ich nicht ändern hadoop.sh Skript (und alle zugehörigen Skripte)
- Ich kann nicht kopieren", "meine Bibliothek" in das /lib-Verzeichnis unter der hadoop-installation directory
- In der hadoop-env.sh das von der hadoop.sh es ist diese Zeile:
export HADOOP_CLASSPATH=$HADOOP_HOME/lib
was wahrscheinlich erklärt, warum meine HADOOP_CLASSPATH env var ignoriert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht erlaubt
HADOOP_CLASSPATH
dannwird die Arbeit machen. Da in Ihrem Fall diese variable ist überschrieben in
hadoop-env.sh
daher sollten Sie die-libjars
option statt:Alternativ aufrufen
FsShell
manuell:Wenn jemand will, um zu überprüfen, hadoop classpath, geben Sie
hadoop classpath
im terminal.Um es zu kompilieren, verwenden Sie diese:
javac -cp $(hadoop classpath):path/to/jars/* java_file.java
Versuchen, um Ihre jar-Datei im default-CLASSPATH-variable und fügen auch HADOOP_CLASSPATH zu.
Führen Sie dann den Befehl.
export CLASSPATH=/your/jar/file/myjar.jar:$CLASSPATH:$HADOOP_CLASSPATH
/path/to/hadoop/script fs -text /path/in/HDFS/to/my/file