Hadoop 学习(六)——MapReduce框架原理、Hadoop数据压缩

215 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第17天,点击查看活动详情


⭐️前面的话⭐️

✉️坚持和努力一定能换来诗与远方!
💭推荐书籍:📚《王道408》,📚《深入理解 Java 虚拟机-周志明》,📚《Java 核心技术卷》
💬算法刷题:✅力扣🌐牛客网
🎈Github
🎈码云Gitee


13 MapReduce 框架原理

13.1 InputFormat 数据输入

13.2 工作流程

13.3 Shuffle 机制

13.4 OutputFormat 数据输出

13.5 MapReduce内核源码解析

13.6 Join 应用

13.7 数据清洗(ETL)

13.8 MapReduce 开发总结

14 Hadoop数据压缩

14.1 概述

14.2 MR支持的压缩编码

  • 压缩算法对比介绍
压缩格式Hadoop自带?算法文件扩展名是否可切片换成压缩格式后,原来的程序是否需要修改
DEFLATE是,直接使用DEFLATE.deflate和文本处理一样,不需要修改
Gzip是,直接使用DEFLATE.gz和文本处理一样,不需要修改
bzip2是,直接使用bzip2.bz2和文本处理一样,不需要修改
LZO否,需要安装LZO.lzo需要建索引,还需要指定输入格式
Snappy是,直接使用Snappy.snappy和文本处理一样,不需要修改
  • 压缩性能的比较
压缩算法原始文件大小压缩文件大小压缩速度解压速度
gzip8.3GB1.8GB17.5MB/s58MB/s
bzip28.3GB1.1GB2.4MB/s9.5MB/s
LZO8.3GB2.9GB49.3MB/s74.6MB/s

14.3 压缩方式选择

压缩方式选择时重点考虑:压缩 / 解压缩速度、压缩率(压缩后存储大小)、压缩后是否可以支持切片

14.4 压缩参数配置

  • 为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器
压缩格式对应的编码/解码器
DEFLATEorg.apache.hadoop.io.compress.DefaultCodec
gziporg.apache.hadoop.io.compress.GzipCodec
bzip2org.apache.hadoop.io.compress.BZip2Codec
LZOcom.hadoop.compression.lzo.LzopCodec
Snappyorg.apache.hadoop.io.compress.SnappyCodec
  • 要在Hadoop中启用压缩,可以配置如下参数
参数默认值阶段建议
io.compression.codecs (在core-site.xml中配置)无,这个需要在命令行输入 hadoop checknative查看输入压缩Hadoop使用文件扩展名判断是否支持某种编解码器
mapreduce.map.output.compress (在mapred-site.xml中配置)falsemapper输出这个参数设为true启用压缩
mapreduce.map.output.compress.codec (在mapred-site.xml中配置)org.apache.hadoop.io .compress.DefaultCodecmapper输出企业多使用LZO或Snappy编解码器在此阶段压缩数据
mapreduce.output.fileoutputformat .compress(在mapred-site.xml中配置)falsereducer输出这个参数设为true启用压缩
mapreduce.output.fileoutputformat .compress.codec(在mapred-site.xml中配置)org.apache.hadoop.io .compress.DefaultCodecreducer输出使用标准工具或者编解码器,如gzip和bzip2

14.5 压缩实操案例

15 常见错误及解决方案