nosql:hadoop_connect_from_windows
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
nosql:hadoop_connect_from_windows [2014/08/06 21:01] – [Hadoop local mit cygwin auf einen Windows 7 Rechner aufrufen] gpipperr | nosql:hadoop_connect_from_windows [2014/09/24 14:30] (aktuell) – [Hadoop local mit cygwin auf einen Windows 7 Rechner aufrufen] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====HDFS Files remote lesen - Mit MS Windows Clients mit Hadoop arbeiten===== | ||
+ | |||
+ | === HDFS Zugriff über Windows === | ||
+ | |||
+ | Software Clients: | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | === Java Klasse um vom Windows Host auf das HDFS zuzugreifen=== | ||
+ | |||
+ | |||
+ | <code java> | ||
+ | package gpi.hadoop; | ||
+ | |||
+ | /** | ||
+ | see main code: | ||
+ | https:// | ||
+ | */ | ||
+ | |||
+ | import java.io.*; | ||
+ | import org.apache.hadoop.fs.*; | ||
+ | import org.apache.hadoop.conf.*; | ||
+ | |||
+ | public class ReadHDFS { | ||
+ | |||
+ | public static void main(String[] args) throws Exception { | ||
+ | try { | ||
+ | // | ||
+ | Configuration conf = new Configuration(); | ||
+ | Path path = new Path(" | ||
+ | | ||
+ | //handle to the file | ||
+ | FileSystem fs = FileSystem.get(path.toUri(), | ||
+ | FSDataInputStream inputStream = fs.open(path); | ||
+ | |||
+ | //read the file | ||
+ | BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); | ||
+ | String line; | ||
+ | line = br.readLine(); | ||
+ | while (line != null) { | ||
+ | System.out.println(line); | ||
+ | line = br.readLine(); | ||
+ | } | ||
+ | | ||
+ | } catch (Exception e) { | ||
+ | System.out.println(e.toString()); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | == Fehler beim ersten Versuch: == | ||
+ | < | ||
+ | 2014-07-13 13: | ||
+ | java.io.IOException: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Lösung: | ||
+ | |||
+ | Hadoop Home Directory setzen: Java Parameter **hadoop.home.dir** wie z.B: " | ||
+ | |||
+ | **UND** | ||
+ | |||
+ | Die Libraries für Windows übersetzen siehe => https:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Hadoop local mit cygwin auf einen Windows 7 Rechner aufrufen ==== | ||
+ | |||
+ | |||
+ | Cygwin installieren und Umgebung wie unter Linux in der .bashrc setzen: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | #Hadoop Home | ||
+ | export HADOOP_HOME=/ | ||
+ | |||
+ | # Avoid Java Lib errros | ||
+ | export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/ | ||
+ | export HADOOP_OPTS=" | ||
+ | |||
+ | # Hadoop environment Variables | ||
+ | export HADOOP_CONF_DIR=$HADOOP_HOME/ | ||
+ | export HADOOP_MAPRED_HOME=$HADOOP_HOME | ||
+ | export HADOOP_COMMON_HOME=$HADOOP_HOME | ||
+ | |||
+ | |||
+ | #JAVA | ||
+ | export JAVA_HOME=/ | ||
+ | |||
+ | #fix CLASSPATH | ||
+ | export HADOOP_CLASSPATH=$(cygpath -pw $($HADOOP_HOME/ | ||
+ | |||
+ | |||
+ | #Defaults | ||
+ | export PATH=$HADOOP_HOME/ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Beim ersten Test des ausgepackten Hadoop wird folgender Fehler mit dem Classpath geworfen: | ||
+ | |||
+ | <code bash> | ||
+ | $ ./hadoop version | ||
+ | Fehler: Hauptklasse org.apache.hadoop.util.VersionInfo konnte nicht gefunden oder geladen werden | ||
+ | </ | ||
+ | |||
+ | |||
+ | Lösung: | ||
+ | Umgebung anpassen oder im Script den Aufbau vom Klassenpfad anpassen: | ||
+ | <code bash> | ||
+ | export HADOOP_CLASSPATH=$(cygpath -pw $($HADOOP_HOME/ | ||
+ | </ | ||
+ | |||
+ | Hadoop Konfigurationsdateien auf den Windows Rechner kopieren. | ||
+ | |||
+ | |||
+ | Test: | ||
+ | |||
+ | <code bash> | ||
+ | hdfs dfs -ls / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Fehler: | ||
+ | |||
+ | < | ||
+ | 2014-08-06 20: | ||
+ | java.io.IOException: | ||
+ | at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java: | ||
+ | |||
+ | </ | ||
+ | |||
+ | Lösung: | ||
+ | Auch hier scheint ein Problem mit den Pfaden in Cygwin vorzuliegen, | ||
+ | Datei $HADOOP_HOME\libexec\hadoop-config.sh anpassen: | ||
+ | <code bash> | ||
+ | # nach allen anderen HADOOP_OPTS das so setzen: | ||
+ | HADOOP_OPTS=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | Nächster Fehler: | ||
+ | |||
+ | <code bash> | ||
+ | Exception in thread " | ||
+ | at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java: | ||
+ | </ | ||
+ | |||
+ | <note important> |