压缩—如何从流式hadoop作业获得压缩(文本)输出

ujv3wf0j  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(279)

我已经阅读并尝试了每一个例子,我可以找到什么似乎是这个直截了当的问题。假设有一组未压缩的文本文件,我想对它们运行一个处理步骤,然后输出一组压缩文件和结果。为了简单起见,本例假设 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。

lh80um4z

lh80um4z1#

hadoop v1.0.0上的工作如下:
这将产生gzip输出:

hadoop jar /home/user/hadoop/path_to_jar/hadoop-streaming-1.0.0.jar \
    -D mapred.output.compress=true \
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
    -D mapreduce.job.reduces=0 \
    -mapper /bin/cat \
    -input /user/hadoop/test/input/test.txt \
    -output /user/hadoop/test/output

块压缩序列文件作为输出:

hadoop jar /home/user/hadoop/path_to_jar/hadoop-streaming-1.0.0.jar \
    -D mapred.output.compress=true \
    -D mapred.output.compression.type=BLOCK \
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \
    -D mapreduce.job.reduces=0 \
    -mapper /bin/cat \
    -input /user/hadoop/test/input/test.txt \
    -output /user/hadoop/test/output
    -outputformat org.apache.hadoop.mapred.SequenceFileOutputFormat

注意参数的顺序以及-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

ecfsfe2w

ecfsfe2w2#

我在cloudera工作,偶然发现了这个帖子。我只是想让您知道,cloudera manager 4.5(我确认的版本)至少有一个选项,除了将客户机配置重写为true或false之外,还可以不重写客户机配置。这使得它非常理想,因为您可以更改该设置以允许开发人员选择是否压缩输出。希望能有所帮助——我知道这是很久以前的事了

unftdfkk

unftdfkk3#

在cloudera manager中,转至服务>服务mapreduce>配置>tasktracker>压缩
压缩mapreduce作业输出(客户端覆盖):不覆盖客户端配置

相关问题