如何在Hadoop中自动压缩文件?
我对Hadoop完全陌生,我想压缩一个大文件并将其放入HDFS中。到目前为止,这就是我所做的 1) 已安装的单节点群集 2) 我的core-site.xml就像如何在Hadoop中自动压缩文件?,hadoop,Hadoop,我对Hadoop完全陌生,我想压缩一个大文件并将其放入HDFS中。到目前为止,这就是我所做的 1) 已安装的单节点群集 2) 我的core-site.xml就像 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <n
<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>
我不确定这里缺少什么,我是否需要在Hadoop环境中启用任何其他属性,或者我是否需要为此编写map reduce程序?因此,需要的是,每当HDFS中出现新文件时,它都应该自动压缩
谢谢
VG我建议您编写map-reduce作业来压缩hdfs中的数据。我不知道是否有一种方法可以对hadoop put操作进行自动压缩,但假设它不存在。一个选项是放置已压缩的文件:
gzip 06_27_06_2016_tcp-leef.log-online
hdfs dfs -put 06_27_06_2016_tcp-leef.log-online.gz /user/hduser/test/
另一种方法是在mapreduce作业中压缩它。
作为一个选项,您可以使用hadoop streaming jar在hdfs中压缩文件:
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 \
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\
-输入\
-输出$输出\
有一篇关于hadoop中数据压缩的好文章,希望对您有所帮助:
我建议您编写map reduce作业来压缩hdfs中的数据。我不知道是否有一种方法可以对hadoop put操作进行自动压缩,但假设它不存在。一个选项是放置已压缩的文件:
gzip 06_27_06_2016_tcp-leef.log-online
hdfs dfs -put 06_27_06_2016_tcp-leef.log-online.gz /user/hduser/test/
另一种方法是在mapreduce作业中压缩它。
作为一个选项,您可以使用hadoop streaming jar在hdfs中压缩文件:
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 \
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\
-输入\
-输出$输出\
有一篇关于hadoop中数据压缩的好文章,希望对您有所帮助:
谢谢,Alex对我来说很有意义,但请让我更清楚地了解我们为什么需要core-site.xml中的compress属性,或者compress属性的用途,还是maperd-site.xml文件?@user3332404我提供的示例是对一次性map reduce作业输出数据应用压缩在mapred-site.xml中设置此属性将自动将其应用于所有map reduce作业输出数据,这样您就不必每次运行作业时都设置此参数谢谢Alex对我有意义,但是,请让我更清楚地了解为什么需要core-site.xml或maperd-site.xml文件中的compress属性或其目的?@user3332404我提供的示例是对一次性map reduce作业输出数据应用压缩在mapred-site.xml中设置此属性将自动将其应用于所有map reduce作业输出数据,这样,您就不必在每次运行作业时都设置此参数