我已经阅读并尝试了每一个例子,我可以找到什么似乎是这个直截了当的问题。假设有一组未压缩的文本文件,我想对它们运行一个处理步骤,然后输出一组压缩文件和结果。为了简单起见,本例假设 cat
作为处理步骤。
我发现的一切都表明这应该有效:
hadoop jar /usr/lib/hadoop-mapreduce/hadoop-streaming.jar \
-Dmap.output.compress=true \
-Dmap.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
-mapper /bin/cat \
-reducer NONE \
-input /path_to_uncompressed \
-output /path_to_compressed
作业正常运行,但输出纯文本文件。我尝试过改变输入文件的大小,改变编解码器(snappy、bzip2等),添加一个reducer,设置mapred.output.compression.type(block、recrod)等等,结果总是一样的。作为参考,我使用的是新安装的cdh4.1.2。
3条答案
按热度按时间lh80um4z1#
hadoop v1.0.0上的工作如下:
这将产生gzip输出:
块压缩序列文件作为输出:
注意参数的顺序以及-d和属性名之间的空格。
在Yarn的情况下,许多属性已被弃用(请参阅此处的完整列表)。因此,您必须进行以下更改:
mapred.output.compress->mapreduce.output.fileoutputformat.compress mapred.output.compression.codec->mapreduce.output.fileoutputformat.compress.codec mapred.output.compression.type->mapreduce.output.fileoutputformat.compress.type
ecfsfe2w2#
我在cloudera工作,偶然发现了这个帖子。我只是想让您知道,cloudera manager 4.5(我确认的版本)至少有一个选项,除了将客户机配置重写为true或false之外,还可以不重写客户机配置。这使得它非常理想,因为您可以更改该设置以允许开发人员选择是否压缩输出。希望能有所帮助——我知道这是很久以前的事了
unftdfkk3#
在cloudera manager中,转至服务>服务mapreduce>配置>tasktracker>压缩
压缩mapreduce作业输出(客户端覆盖):不覆盖客户端配置