1、当输出数据量较大时,可以使用Hadoop提供的压缩机制对数据进行压缩,减少网络传输宽带以及存储消耗。
2、可以指定对map的输出结果进行压缩,也就是整个mapreduce中间过程进行压缩,也可以指定对reduce的输出结果也就是最终结果进行压缩。
3、其中对map输出进行压缩主要是为了减少shuffle过程中网络传输的数据量,而对reduce输出进行压缩主要是为了减少输出结果占用的HDFS存储。
对输出结果进行压缩,不涉及到具体任务代码的开发,只涉及到参数的控制,也就是在run.sh脚本中的参数控制。具体如下:
-jobconf "mapred.compress.map.output=true" \
#表示的是在map阶段进行数据压缩。
-jobconf "mapred.map.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" \
#表示的是map阶段的输出压缩为何种格式,常用的Gzip格式。
-jobconf "mapred.output.compress=true" \
#表示reduce阶段最终的输出结果进行压缩。
-jobconf "mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec" \
#同样压缩为Gzip格式。
实践步骤:
map.py &