nosql:hadoop_first_setup
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
nosql:hadoop_first_setup [2014/08/22 16:59] – [Eine Hadoop 2.4 Test Umgebung installieren und konfigurieren] gpipperr | nosql:hadoop_first_setup [2014/08/23 17:28] (aktuell) – gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ===== Eine Hadoop 2.4 Test Umgebung installieren und konfigurieren ===== | ||
+ | |||
+ | Ziel: Hadoop Cluster für den Einstieg in das Thema Hadoop als 3 Knoten Cluster aufsetzen. | ||
+ | |||
+ | |||
+ | Ablauf: | ||
+ | - Standard Linux Installation | ||
+ | - Java 8 installieren | ||
+ | - Hadoop auf Node 1 aufsetzen | ||
+ | - Node 2 und 3 in das Cluster aufnehmen | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | |||
+ | ==== Standard Linux Installation mit Java 8==== | ||
+ | |||
+ | Je eine VM mit Oracle Linux 6.5 64 Bit in einer Standard Installation als Server ohne X Umgebung. | ||
+ | |||
+ | Ablauf: | ||
+ | * Betriebssystem auf den Servern bereitstellen | ||
+ | * Java auf den Servern aufsetzen | ||
+ | * FW Konfiguration planen, falls FW zwischen den Hadoop Cluster und der eigentlichen Anwendung | ||
+ | |||
+ | === Download Software === | ||
+ | |||
+ | Die benötigte Software: | ||
+ | * [[http:// | ||
+ | * Oracle Linux 6.5 - Download über [[https:// | ||
+ | * Java Kit 8 - Download über [[http:// | ||
+ | |||
+ | === Installation Linux Umgebung === | ||
+ | |||
+ | * Installation Oracle Linux 6.5 Basis ( Desktop Umgebung nur bei Bedarf) | ||
+ | * Yum Repository prüfen, Konfiguration bei Bedarf anlegen <code bash> | ||
+ | cd / | ||
+ | wget http:// | ||
+ | </ | ||
+ | * Update mit "yum update" | ||
+ | * SELinux deaktiviert :<code bash> | ||
+ | [root@nosqldb01 ~]# | ||
+ | vi / | ||
+ | .. | ||
+ | SELINUX=disabled | ||
+ | .. | ||
+ | |||
+ | [root@nosqldb01 ~]# reboot | ||
+ | |||
+ | [root@nosqldb01 | ||
+ | |||
+ | </ | ||
+ | * Firewall Einstellungen prüfen und je nach Umgebung einstellen! | ||
+ | * Auf die richtige Uhrzeit achten und per ntpd die Zeit auf allen Servern im Store immer richtig einstellen lassen! | ||
+ | * IP V6 ausschalten< | ||
+ | vi / | ||
+ | # disable ipv6 | ||
+ | net.ipv6.conf.all.disable_ipv6 = 1 | ||
+ | net.ipv6.conf.default.disable_ipv6 = 1 | ||
+ | net.ipv6.conf.lo.disable_ipv6 = 1 | ||
+ | |||
+ | #Testen mit: | ||
+ | |||
+ | cat / | ||
+ | |||
+ | 1 | ||
+ | |||
+ | # 1=Ausgeschaltet! | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===Linux hadoop User anlegen=== | ||
+ | |||
+ | <code bash> | ||
+ | groupadd -g 2000 hinstall | ||
+ | useradd -u 2100 -g hinstall hadoop | ||
+ | passwd hadoop | ||
+ | </ | ||
+ | |||
+ | |||
+ | Password setzen: | ||
+ | <code bash> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===Software Verzeichnis anlegen === | ||
+ | |||
+ | <code bash> | ||
+ | mkdir -p /opt/hadoop | ||
+ | chown -R hadoop: | ||
+ | chmod -R 775 /opt/hadoop | ||
+ | </ | ||
+ | |||
+ | ===Java Version prüfen - JDK 8u5 nach Bedarf installieren=== | ||
+ | |||
+ | ** Als User root! ** | ||
+ | \\ | ||
+ | |||
+ | Kopieren von [[http:// | ||
+ | |||
+ | <code bash> | ||
+ | # Java installieren | ||
+ | yum install | ||
+ | |||
+ | |||
+ | # Java aktivieren | ||
+ | |||
+ | # Neue Java Version dem OS bekannt geben | ||
+ | / | ||
+ | |||
+ | # Versionen anzeigen | ||
+ | / | ||
+ | |||
+ | # Version einstellen | ||
+ | / | ||
+ | # Version auswählen | ||
+ | |||
+ | # testen | ||
+ | java -version | ||
+ | java version " | ||
+ | |||
+ | # alte Java Version deinstallieren | ||
+ | yum list java* | ||
+ | |||
+ | yum erase java-1.6.0-openjdk.x86_64 java-1.7.0-openjdk.x86_64 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Nach einem Java Upgrade muss das Kommando jps wieder neu verlinkt werden: | ||
+ | |||
+ | Das Programm jps sollte auf dem Server im Pfad liegen/ | ||
+ | |||
+ | <code bash> | ||
+ | jps-m | ||
+ | |||
+ | # falls fehler | ||
+ | # über /usr/bin verlinken | ||
+ | rm / | ||
+ | ln -s / | ||
+ | |||
+ | </ | ||
+ | |||
+ | === FW Konfiguration planen, falls FW zwischen den Knoten und der eigentlichen Anwendung === | ||
+ | |||
+ | Soll eine FW den Zugriff zwischen den Store und der Applikation kontrollieren, | ||
+ | |||
+ | **in Arbeit** | ||
+ | |||
+ | |||
+ | Ports: | ||
+ | |||
+ | * 9000 | ||
+ | * 50070 | ||
+ | * 50075 | ||
+ | * ?? | ||
+ | |||
+ | |||
+ | siehe auch : | ||
+ | |||
+ | |||
+ | Der Client/ | ||
+ | |||
+ | |||
+ | ==== Hadoop Software auf den Server kopieren und entpacken/ | ||
+ | |||
+ | **User hadoop!** | ||
+ | |||
+ | |||
+ | |||
+ | \\ | ||
+ | Entpacken der Software in das Verzeichnis / | ||
+ | |||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | |||
+ | # check hash see hadoop-2.4.1.tar.gz.mds for hashes | ||
+ | md5sum hadoop-2.4.1.tar.gz | ||
+ | 0ce4cfd282002b7aa42cf71df4145150 | ||
+ | |||
+ | #entpacken | ||
+ | tar -xf hadoop-2.4.1.tar.gz | ||
+ | |||
+ | |||
+ | #Verlinken um bei späteren Updates nicht die Pfade zu ändern | ||
+ | |||
+ | ln -s / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Umgebungsvariable HADOOP_HOME in der Bash setzen und je nach Vorlieben permanent einrichten: | ||
+ | <code bash> | ||
+ | vi .bashrc | ||
+ | .. | ||
+ | #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 | ||
+ | |||
+ | #HDFS | ||
+ | export HADOOP_HDFS_HOME=$HADOOP_HOME | ||
+ | |||
+ | #YARN | ||
+ | export YARN_HOME=$HADOOP_HOME | ||
+ | |||
+ | #JAVA | ||
+ | export JAVA_HOME=/ | ||
+ | |||
+ | #Defaults | ||
+ | export PATH=$HADOOP_HOME/ | ||
+ | |||
+ | |||
+ | .. | ||
+ | |||
+ | . .bashrc | ||
+ | </ | ||
+ | |||
+ | Testen der Installation mit: | ||
+ | <code bash> | ||
+ | |||
+ | # zeigt die installierte Software Version | ||
+ | |||
+ | hadoop version | ||
+ | |||
+ | Hadoop 2.4.1 | ||
+ | ... | ||
+ | |||
+ | </ | ||
+ | |||
+ | === Anlegen der Cluster Location === | ||
+ | |||
+ | **User hadoop!** | ||
+ | \\ | ||
+ | |||
+ | Anlegen des Hadoop Data Verzeichnisses, | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | # HDFS Base directory | ||
+ | mkdir / | ||
+ | |||
+ | #Name node directoy | ||
+ | mkdir / | ||
+ | |||
+ | # Data node directory | ||
+ | mkdir / | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== Klonen der Umgebung um die weiteren Storage Node zu konfigurieren ==== | ||
+ | |||
+ | Die bestehende Umgebung stoppen und als Klon Template verwenden um die Hosts 2 und 3 (dient später dazu einen neuen Knoten hinzufügen zu können) anzulegen. | ||
+ | |||
+ | Tipp: | ||
+ | Daran denken dass nach einem Klone einer Linux 6 Maschine die Netzwerkkarten Konfiguration stark verbogen wird, siehe [[http:// | ||
+ | |||
+ | Die Namensauflösung zwischen den Knoten prüfen und bei Bedarf die Namen in der hosts Datei eintragen. Darauf achten, dass auch der eigene Name des Servers richtig aufgelöst wird. | ||
+ | |||
+ | |||
+ | |||
+ | === SSH Konfiguration root und Hadoop User === | ||
+ | Als User Hadoop! | ||
+ | |||
+ | Für die Vereinfachung der Wartung zwischen den Knoten SSH Key einrichten, siehe [[windows: | ||
+ | |||
+ | <code bash> | ||
+ | #generate key on every node | ||
+ | ssh-keygen -t dsa | ||
+ | ssh nosqldb01 ssh-keygen -t dsa | ||
+ | ssh nosqldb03 ssh-keygen -t dsa | ||
+ | |||
+ | # Copy public key from one node to the other | ||
+ | |||
+ | #2/3 to 1 | ||
+ | ssh nosqldb01 cat ~/ | ||
+ | ssh nosqldb03 cat ~/ | ||
+ | #1/3 to 2 | ||
+ | ssh nosqldb01 | ||
+ | ssh nosqldb02 cat ~/ | ||
+ | ssh nosqldb03 cat ~/ | ||
+ | #1/2 to 3 | ||
+ | ssh nosqldb03 | ||
+ | ssh nosqldb02 cat ~/ | ||
+ | ssh nosqldb01 cat ~/ | ||
+ | |||
+ | # auf die localen Knoten auch per localhost ohne Password anmelden | ||
+ | ssh localhost | ||
+ | ssh 0.0.0.0 | ||
+ | |||
+ | </ | ||
+ | |||
+ | Darauf achten, das auch auf den lokalen Knoten ein Connect über den Servernamen / Localhost und 0.0.0.0 möglich ist. | ||
+ | |||
+ | |||
+ | ==== Hadoop Cluster Single Server Konfiguration einrichten ==== | ||
+ | |||
+ | Ziel ist es zwar ein Cluster mit zum Schluss 3 Servern ein zurichten, im ersten Schritt wird aber zuerst nur der Knoten 1 konfiguriert. | ||
+ | |||
+ | Die Konfiguration wird unter **$HADOOP_HOME/ | ||
+ | |||
+ | |||
+ | Die folgende Konfigurationsdateien werden anpassen/ | ||
+ | |||
+ | * core-site.xml | ||
+ | * hdfs-site.xml | ||
+ | * [[http:// | ||
+ | * mapred-site.xml | ||
+ | |||
+ | core-site.xml: | ||
+ | <code mxl> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | hdfs-site.xml: | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | yarn-site.xml: | ||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Für ein kleines System mit diesen Einstellungen experimentieren: | ||
+ | <code bash> | ||
+ | <!-- memory settings for small systems - sometimes to small! --> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | </ | ||
+ | |||
+ | Konfiguration für MapReduce\\ | ||
+ | mapred-site.xml: | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | http:// | ||
+ | |||
+ | |||
+ | === HDFS File System formatieren === | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | # Basis Verzeichnisse prüfen | ||
+ | |||
+ | ls -la / | ||
+ | |||
+ | # formatieren | ||
+ | |||
+ | $HADOOP_HOME/ | ||
+ | |||
+ | ... | ||
+ | 14/07/10 22:16:36 INFO common.Storage: | ||
+ | .... | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Hadoop starten ==== | ||
+ | |||
+ | |||
+ | Im ersten Schritt Name Node, Data Nodes für HDFS starten: | ||
+ | <code bash> | ||
+ | |||
+ | Bzw. alles auf einmal über | ||
+ | |||
+ | $HADOOP_HOME/ | ||
+ | |||
+ | # prüfen ob alle Prozesse laufen: | ||
+ | |||
+ | jps -l | ||
+ | .. | ||
+ | 4208 org.apache.hadoop.hdfs.server.datanode.DataNode | ||
+ | 4087 org.apache.hadoop.hdfs.server.namenode.NameNode | ||
+ | 4363 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode | ||
+ | |||
+ | </ | ||
+ | |||
+ | YARN Ressource Manager, | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | $HADOOP_HOME/ | ||
+ | |||
+ | |||
+ | # Jetzt läuft: | ||
+ | jps -l | ||
+ | |||
+ | 4208 org.apache.hadoop.hdfs.server.datanode.DataNode | ||
+ | 4087 org.apache.hadoop.hdfs.server.namenode.NameNode | ||
+ | 4363 org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode | ||
+ | |||
+ | 4571 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager | ||
+ | 4669 org.apache.hadoop.yarn.server.nodemanager.NodeManager | ||
+ | |||
+ | </ | ||
+ | |||
+ | History Server starten: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | $HADOOP_HOME/ | ||
+ | starting historyserver, | ||
+ | |||
+ | #Jetzt läuft zusätzlich: | ||
+ | jps -l | ||
+ | .. | ||
+ | 4705 org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer | ||
+ | .. | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === Im Browser prüfen ob alles läuft === | ||
+ | |||
+ | * NameNode URL aufrufen: | ||
+ | * JobHistory status aufrufen: | ||
+ | * Yarn ResourceManager aufrufen: | ||
+ | |||
+ | |||
+ | Falls kein X zur Hand. lynx verwenden: | ||
+ | <code bash> | ||
+ | lynx http:// | ||
+ | </ | ||
+ | |||
+ | === HDFS - Erste Schritte === | ||
+ | |||
+ | User Files System anlegen | ||
+ | |||
+ | <code bash> | ||
+ | hdfs dfs -mkdir /user | ||
+ | hdfs dfs -mkdir / | ||
+ | </ | ||
+ | |||
+ | |||
+ | Eine Datei auf in das Hadoop Filesystem kopieren: | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | cd $HADOOP_HOME | ||
+ | |||
+ | hdfs dfs -copyFromLocal README.txt / | ||
+ | |||
+ | hdfs dfs -ls / | ||
+ | |||
+ | Found 1 items | ||
+ | -rw-r--r-- | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | === Java Fehler beheben === | ||
+ | |||
+ | <code bash> | ||
+ | hdfs dfs -ls /user | ||
+ | |||
+ | Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library / | ||
+ | It's highly recommended that you fix the library with ' | ||
+ | |||
+ | 14/07/10 22:27:20 WARN util.NativeCodeLoader: | ||
+ | |||
+ | </ | ||
+ | |||
+ | **1. Lösung** | ||
+ | <code bash> | ||
+ | export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/ | ||
+ | export HADOOP_OPTS=" | ||
+ | |||
+ | hdfs dfs -ls /user | ||
+ | |||
+ | 14/07/10 22:33:04 WARN util.NativeCodeLoader: | ||
+ | -rw-r--r-- | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | see: | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | Leider ist in der Apache Download Version die 32bit Libary nur enthalten, 64bit muss selber aus dem Code erzeugt werden. | ||
+ | |||
+ | ==== Hadoop Cluster stoppen ==== | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | cd $HADOOP_HOME/ | ||
+ | |||
+ | |||
+ | jps -m | ||
+ | |||
+ | 4208 DataNode | ||
+ | 5027 JobHistoryServer | ||
+ | 4087 NameNode | ||
+ | 5323 Jps -m | ||
+ | 4571 ResourceManager | ||
+ | 4363 SecondaryNameNode | ||
+ | 4669 NodeManager | ||
+ | |||
+ | |||
+ | $HADOOP_HOME/ | ||
+ | |||
+ | ./ | ||
+ | ./ | ||
+ | |||
+ | jps -m | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Benutzerberechtigungen in Hadoop==== | ||
+ | |||
+ | siehe: | ||
+ | |||
+ | * http:// | ||
+ | |||
+ | |||
+ | ==== Map Reduce im Hadoop Cluster testen ==== | ||
+ | |||
+ | Nach der erfolgreichen Installation einen ersten Test mit einer Beispiel Klasse durchführen: | ||
+ | <code bash> | ||
+ | |||
+ | cd $HADOOP_HOME/ | ||
+ | |||
+ | #see all examples | ||
+ | yarn jar hadoop-mapreduce-examples-2.4.1.jar | ||
+ | |||
+ | |||
+ | |||
+ | #Starten: | ||
+ | # pi: A map/reduce program that estimates Pi using a quasi-Monte Carlo method. | ||
+ | |||
+ | yarn jar hadoop-mapreduce-examples-2.4.1.jar pi 1 1 | ||
+ | |||
+ | # mit daten in dfs | ||
+ | # randomwriter: | ||
+ | |||
+ | yarn jar hadoop-mapreduce-examples-2.4.1.jar randomwriter random-data | ||
+ | |||
+ | |||
+ | .. | ||
+ | Job started: Sun Aug 10 14:28:05 CEST 2014 | ||
+ | .. | ||
+ | .. | ||
+ | |||
+ | 14/08/10 14:28:08 INFO mapreduce.Job: | ||
+ | |||
+ | |||
+ | # Auflisten lassen: | ||
+ | |||
+ | yarn application -list | ||
+ | ... | ||
+ | |||
+ | | ||
+ | |||
+ | application_1407602714166_0002 | ||
+ | |||
+ | |||
+ | </ | ||
+ | |||
+ | Hier sollte nun der Job auch erfolgreich durchlaufen UND nicht im Status " | ||
+ | |||
+ | siehe auch als Beispiel: http:// | ||
+ | |||
+ | |||
+ | ==== Hadoop auf dem System aus den Quellen aufbauen ==== | ||
+ | |||
+ | Da auf dem System Fehler mit dem " | ||
+ | |||
+ | |||
+ | siehe http:// | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Quellen ===== | ||
+ | |||
+ | Apache: | ||
+ | * https:// | ||
+ | * http:// | ||
+ | |||
+ | Netz: | ||
+ | |||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * https:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
nosql/hadoop_first_setup.txt · Zuletzt geändert: 2014/08/23 17:28 von gpipperr