2016-08-03 10 views
1

Ich bin völlig neu in Hadoop, und ich möchte eine große Datei komprimieren und in HDFS.So weit das ist, was ich getan habe 1) Installierte Single-Node-Cluster 2) Meine core-site.xml ist wieWie werden Dateien in Hadoop automatisch komprimiert?

<configuration> 
<property> <name>fs.defaultFS</name> 
<value>hdfs://localhost:9000</value> 
</property> 
<property> <name>io.compression.codecs</name> 
<value>com.hadoop.compression.lzo.LzoCodec</value> 
</property> 
</configuration> 

Jetzt, wenn ich eine lokale 2GB-Datei in HDFS, mit folgenden Befehl bearbeiten.Ich sehe immer noch die gleiche Größe in HDFS.

hadoop fs -put 06_27_06_2016_tcp-leef.log-online /user/hduser/test/ 

nicht sicher, was ich hier fehlt, gibt es eine andere Eigenschaft, die ich brauche, in Hadoop-Umgebung zu aktivieren oder muss ich Karten reduzieren schreiben Programm dafür? So ist die Anforderung ist, wenn eine neue Datei kommt in HDFS sollte es automatisch komprimiert werden.

Dank VG

Antwort

0

Ich schlage vor, Sie Karten reduzieren Job schreiben Ihre Daten in hdfs zu komprimieren. Ich weiß nicht, ob es eine Möglichkeit gibt, die automatische Komprimierung auf der Hadoop-Put-Operation durchzuführen, aber angenommen, sie existiert nicht. Eine Möglichkeit ist, bereits komprimierte Datei zu setzen:

gzip 06_27_06_2016_tcp-leef.log-online 
hdfs dfs -put 06_27_06_2016_tcp-leef.log-online.gz /user/hduser/test/ 

Eine andere Möglichkeit ist es in mapreduce Job zu komprimieren. Als Option Sie hadoop Streaming jar zum Komprimieren von Dateien innerhalb hdfs verwenden können:

hadoop jar $HADOOP_HOME/contrib/streaming/hadoop-streaming-0.20.2-cdh3u2.jar \ 
-Dmapred.output.compress=true \ 
-Dmapred.compress.map.output=true \ 
-Dmapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec \ 
-Dmapred.reduce.tasks=0 \ 
-input <input-path> \ 
-output $OUTPUT \ 

Es gibt einen schönen Artikel über die Datenkompression in hadoop, hoffen, dass Sie es sehr hilfreich finden:

http://comphadoop.weebly.com/

+0

Danke Alex Sinn für mich, aber können Sie mir bitte mehr Klarheit darüber, warum wir oder den Zweck der Komprimierung von Eigenschaften in core-site.xml oder maperd-site.xml-Dateien? – user3332404

+0

@ user3332404 Beispiel Ich habe angegeben, Komprimierung für einzelne Zeit anzuwenden map-reduced Job-Ausgabedaten Wenn Sie diese Eigenschaft in mapred-site.xml festlegen, wird sie automatisch für alle Ausgabedaten mit Map-reduce-Jobs angewendet Sie müssen diesen Parameter jedes Mal einstellen, wenn Sie einen Job ausführen – Alex