压缩目的:
降低数据磁盘存储空间,减少传输数据的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 |
推荐压缩算法:
Snappy
mr中怎样使用压缩:
在mapReduce程序中进行设置,影响当前mr程序 在mapreduce-site.xml进行配置,影响所有的mr程序MapReduce常见算法:
- 单词计数
- 数据去重
- 排序
- Top K
- 选择
- 投影
- 分组
- 多表连接
- 单表关联
总结:
- 在Hadoop中,codec由CompressionCode的实现来表示。下面是一些实现: