Hadoop 压缩
压缩的好处
文件压缩的好处:减少文件存储锁需要的磁盘空间,加速数据在网络和磁盘上的传输。
常见的压缩格式
压缩格式 工具 算法 文件扩展名 是否可以切分
DELATE 无 DEFLATE .delate 否
Gzip gzip DEFLATE .gz 否
bzip2 bzip2 bzip2 .bz2 是
LZO lzop lzo .lzo 否
LZ4 无 LZ4 .lz4 否
Snappy 无 Snappy .snappy 否
选择压缩算法的时候需要考虑到时间和空间,如果要想压缩个解压速度快,那么必定会牺牲空间为代价,在使用压缩的时候,可以通过使用选项来选择是优化速度还是优化空间,例如,gzip算法,使用-1选项表示优化时间,使用 -9 表示节省空间。 gzip -1 test.txt
压缩和解压缩的算法代码
如果需要使用上述的其他压缩和解压缩算法,可以zai core-siye.xml文件定义 io.compression.codecs 属性
MapReduce中使用压缩
reduce端
修改mapred-site.xml文件
mapreduce.output.fileoutputformat.compress 设置为true
mapreduce.output.fileoutputformat.compress.codec 设置相应的压缩算法类名
如果输出是序列文件(sequence file),还可以设置mapreduce.output.fileoutputformat.compress.type属性来控制使用的压缩格式。默认是RECODE,既针对每条记录进行压缩,还有其他的属性值,如NONE,BLOCK,如果改外BLOCK,将针对每一组记录进行压缩。推荐这种压缩方式,压缩效率更高。
map端
对map的输出进行压缩,使用像LZO、LZ4、Snappy这样的快速压缩方式,可以获得性能的提升,应为需要传输的数据减少了。
修改mapred-site.xml文件
mapreduce.map.output.compress 设置为true,默认是false
mapreduce.map.output.compress.codec 压缩类型