Hadoop当中支持的压缩算法

文件压缩他有两大好处:1.节约磁盘空间
2.加速数据在网络和磁盘的传输
现在我所用的这个Hadoop经过重新编译,可以支持所有的压缩格式
Hadoop当中支持的压缩算法
各种压缩算法对应使用的java类
压缩格式 对应使用的java类
DEFLATE org.apache.hadoop.io.compress.DeFaultCodec
gzip org.apache.hadoop.io.compress.GZipCodec
bzip2 org.apache.hadoop.io.compress.BZip2Codec
LZO com.hadoop.compression.lzo.LzopCodec
LZ4 org.apache.hadoop.io.compress.Lz4Codec
Snappy org.apache.hadoop.io.compress.SnappyCodec

###在Map reduce中如何开启压缩算法(两种方法)
##方法一:在代码中进行设置压缩
== Configuration conf = new Configuration();
// 设置Map使用的压缩算法
conf.set(“mapreduce.map.output.compress”,“true”);
conf.set(“mapreduce.map.output.compress.codec”,“org.apache.hadoop.io.compress.SnappyCodec”);
// 设置reduce的压缩算法
conf.set(“mapreduce.output.fileoutputformat.compress”,“true”);
conf.set(“mapreduce.output.fileoutputformat.compress.type”,“RECORD”);
conf.set(“mapreduce.output.fileoutputformat.compress.codec”,“org.apache.hadoop.io.compress.SnappyCodec”);==
##方法二:配置全局的mapreduce压缩
修改mapred-site.xml配置文件,然后重启集群,以便对所有的mapreduce任务进行压缩

map输出数据进行压缩

mapreduce.map.output.compress
true


mapreduce.map.output.compress.codec
org.apache.hadoop.io.compress.SnappyCodec

reduce输出数据进行压缩

mapreduce.output.fileoutputformat.compress
true


mapreduce.output.fileoutputformat.compress.type
RECORD

mapreduce.output.fileoutputformat.compress.codec
org.apache.hadoop.io.compress.SnappyCodec

所有节点都要修改mapred-site.xml,修改完成之后记得重启集群

#使用hadoop的snappy压缩来对数据进行压缩
在Driver里,通过Configuration对象设置压缩格式
第一步:代码中添加配置
这里通过修改代码的方式来实现数据的压缩
map阶段输出压缩配置
Configuration configuration = new Configuration();
configuration.set(“mapreduce.map.output.compress”,“true”);
configuration.set(“mapreduce.map.output.compress.codec”,“org.apache.hadoop.io.compress.SnappyCodec”);
reduce阶段输出压缩配置
configuration.set(“mapreduce.output.fileoutputformat.compress”,“true”);
configuration.set(“mapreduce.output.fileoutputformat.compress.type”,“RECORD”);
configuration.set(“mapreduce.output.fileoutputformat.compress.codec”,“org.apache.hadoop.io.compress.SnappyCodec”);
第二步:重新打包测试mr程序
Hadoop当中支持的压缩算法