Der Lempel-Ziv-Oberhumer (LZO) Datenkompressionsalgorithmus ist ein verlustfreier Datenkompressionsalgorithmus, der eine hohe Geschwindigkeit beim Entpacken erreicht. Das Hadoop LZO Projekt bietet paralleles arbeiten mit gesplitteten LZO Dateien.
Wir verwenden die Hadoop LZO Distribution wie sie bei Twitter eingesetzt wird.
Voraussetzung für diese Anleitung ist, dass ihr Hadoop bereits wie hier geschildert installiert habt: [wiki]Apache Hadoop Installation[/wiki]
Diese baut auf der Hadoop GPL Compression auf, enthält aber einige Verbesserungen die noch nicht in das andere Projekt übernommen wurden.
Zuerst beginnen wir damit LZO zu installieren. Auf einem Debian basierten System installiert ihr lzo über
Wir laden nun die aktuellen Dateien von Hadoop-LZO aus den Quellen bei github herunter und entpacken diese
Für das Kompilieren der Native Extensions muss $JAVA_HOME korrekt gesetzt sein, mit echo können wir den aktuellen Wert prüfen und ihn dann gegebenenfalls überschreiben:
Dann wechseln wir in das Verzeichnis und kompilieren die Native Extension
Nach einem erfolgreichen Build befinden sich die notwendigen Dateien im build Ordner. Sowohl die JAR Datei, als auch die Java Native Extensions müssen nun in Hadoop platziert werden:
Außerdem muss LZO in der Konfiguration aktiviert werden. Dazu legen wir eine neue Konfigurationsdatei an, falls diese noch nicht existiert.
Sie muss die zwei nachfolgenden Einstellungen enthalten:
sudo vim /etc/hadoop/conf/core-site.xml
Nachdem alle Änderungen vorgenommen wurden, muss Hadoop noch neugestartet werden. Je nachdem welche Services ihr laufen habt, könnt ihr das entweder manuell machen oder mit folgendem Aufruf.
== Funktionstest ==
Nun könnt ihr einen Hadoop LZO einem einfachen Funktionstest unterziehen. Erstellt eine LZO Index Datei.
Dazu müsst ihr erstmal auf eurem Desktopcomputer eine LZO Datei erstellen können, installiert euch dazu das Tool: lzop
Nun sucht euch eine große Datei aus, die ihr indexieren wollt und macht eine LZO Datei daraus. Im Beispiel entscheide ich mich für big_file.txt.
Diese müsst ihr anschließend in das HDFS kopieren.
Nun indexiert die Datei:
Und schon sollte eine LZO Index Datei entstanden sein:
Wir verwenden die Hadoop LZO Distribution wie sie bei Twitter eingesetzt wird.
Voraussetzung für diese Anleitung ist, dass ihr Hadoop bereits wie hier geschildert installiert habt: [wiki]Apache Hadoop Installation[/wiki]
Diese baut auf der Hadoop GPL Compression auf, enthält aber einige Verbesserungen die noch nicht in das andere Projekt übernommen wurden.
Zuerst beginnen wir damit LZO zu installieren. Auf einem Debian basierten System installiert ihr lzo über
Wir laden nun die aktuellen Dateien von Hadoop-LZO aus den Quellen bei github herunter und entpacken diese
Für das Kompilieren der Native Extensions muss $JAVA_HOME korrekt gesetzt sein, mit echo können wir den aktuellen Wert prüfen und ihn dann gegebenenfalls überschreiben:
Dann wechseln wir in das Verzeichnis und kompilieren die Native Extension
Nach einem erfolgreichen Build befinden sich die notwendigen Dateien im build Ordner. Sowohl die JAR Datei, als auch die Java Native Extensions müssen nun in Hadoop platziert werden:
Außerdem muss LZO in der Konfiguration aktiviert werden. Dazu legen wir eine neue Konfigurationsdatei an, falls diese noch nicht existiert.
Sie muss die zwei nachfolgenden Einstellungen enthalten:
sudo vim /etc/hadoop/conf/core-site.xml
Quellcode
- <property>
- <name>io.compression.codecs</name>
- <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.BZip2Codec</value>
- </property>
- <property>
- <name>io.compression.codec.lzo.class</name>
- <value>com.hadoop.compression.lzo.LzoCodec</value>
- </property>
Nachdem alle Änderungen vorgenommen wurden, muss Hadoop noch neugestartet werden. Je nachdem welche Services ihr laufen habt, könnt ihr das entweder manuell machen oder mit folgendem Aufruf.
== Funktionstest ==
Nun könnt ihr einen Hadoop LZO einem einfachen Funktionstest unterziehen. Erstellt eine LZO Index Datei.
Dazu müsst ihr erstmal auf eurem Desktopcomputer eine LZO Datei erstellen können, installiert euch dazu das Tool: lzop
Nun sucht euch eine große Datei aus, die ihr indexieren wollt und macht eine LZO Datei daraus. Im Beispiel entscheide ich mich für big_file.txt.
Diese müsst ihr anschließend in das HDFS kopieren.
Nun indexiert die Datei:
Quellcode
- hadoop jar /usr/lib/hadoop-0.20/lib/hadoop-lzo-*.jar com.hadoop.compression.lzo.LzoIndexer /tmp/big_file.txt.lzo
- INFO lzo.GPLNativeCodeLoader: Loaded native gpl library
- INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev fatal: Not a git repository (or any of the parent directories): .git]
- INFO lzo.LzoIndexer: [INDEX] LZO Indexing file /tmp/big_file.txt.lzo, size 0,00 GB...
- INFO lzo.LzoIndexer: Completed LZO Indexing in 0,14 seconds (0,29 MB/s). Index size is 0,01 KB.
Und schon sollte eine LZO Index Datei entstanden sein:
8.084 mal gelesen