压缩目的:
降低数据磁盘存储空间,减少传输数据的IO量
压缩追求的指标:
压缩时间 越短越好
压缩化 越大越好
硬件需求如:CPU 算法支持
mr中可以使用压缩的地方:
map的输出数据进行数据压缩,减少shuff给reduce的数据量
reduce的输出进行数据压缩,减少最终结果在磁盘存储所占的空间
检查Hadoop支持的压缩算法:
[root@node-1 ~]# hadoop checknative Native library checking: hadoop: true /export/servers/hadoop-2.6.0cdh5.14.0/lib/native/libhadoop.so.1.0.0 zlib: true /lib64/libz.so.1 snappy: true /usr/lib64/libsnappy.so.1 lz4: true revision:10301 bzip2: true /lib64/libbz2.so.1 openssl: true /usr/lib64/libcrypto.so |
如果某一个算法流失,可以在线yum在线装,或者重新编译Hadoop
推荐压缩算法:
Snappy
mr中怎样使用压缩:
在mapReduce程序中进行设置,影响当前mr程序
在mapreduce-site.xml进行配置,影响所有的mr程序
- 数据去重
- 排序
- Top K
- 选择
- 投影
- 分组
- 多表连接
- 单表关联
总结:
- 在Hadoop中,codec由CompressionCode的实现来表示。下面是一些实现: