压缩在大数据中的使用

1、为什么要使用压缩
单机:磁盘空间的限制
Hadoop/HDFS:DN是用来存储数据用的 药对HDFS上的数据进行压缩,减少
存储在HDFS上数据所占用的空间
1T ==》假如压完 300G
3T ==>就是 900G

INPUT==>MR==>OUTPUT

好处:
减少HDFS读写数据量
提升网络传输效率

2、压缩的使用场景
input 数据的进入------》xxxx处理------->output
比如离线的:
MR/Spark/Flink:HDFS(有界)----〉MR----》HDFS

实时的:
Spark/Strom/Flink:无界—〉stream—》Kafka/Nosql—>RDBMS

input:HDFS 数据输入----〉分布式处理引擎:MR map作为中间状态他输出—》输出在输出到HDFS

MR在压缩过程中不需要手工进行处理,但是MR在进行数据处理时肯定是需要一个动作来进行处理数据的压缩和解压的这个在底层自己实现。

3、压缩使用的注意事项
注意事项:带来好处的同时,势必还有一个反面的意义存在
压缩:原始数据----》压缩的技术手段—〉变成目标数据
提示:输入和输出的内容是“一样的”,但是提及是不一样的!
解压缩:原始数据—》解压说技术手段—〉目标数据
技术:就是算法
反面:在处理压缩以及解压的过程中,是有资源CPU的消耗
注意事项:在使用压缩时候一定要确定你的服务器CPU的资源使用率是够的

4、常见的压缩格式
GZIP\BZIP2\LZO\SNAPPY
压缩比:原始数据大小和压缩后的数据大小的百分比
1G 压缩完是 200M 500M 700M那
速度:压缩和解压缩过程中所耗费的时间比

5、Codec详解
压缩的解码和编码器,针对不同格式的压缩进行处理

6、压缩编程实战
压缩在大数据中的使用
压缩在大数据中的使用
压缩在大数据中的使用
7、解压缩编程实战
压缩在大数据中的使用
8、压缩和解压缩在Hadoop源码中的体现
压缩在大数据中的使用
9、Hadoop整合压缩使用之代码设置

map

mapreduce.map.output.compress
false
Should the outputs of the maps be compressed before being
sent across the network. Uses SequenceFile compression.

mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.DefaultCodec If the map outputs are compressed, how should they be compressed?

reducer

mapreduce.output.fileoutputformat.compress false Should the job outputs be compressed? mapreduce.output.fileoutputformat.compress.type RECORD If the job outputs are to compressed as SequenceFiles, how should they be compressed? Should be one of NONE, RECORD or BLOCK. mapreduce.output.fileoutputformat.compress.codec org.apache.hadoop.io.compress.DefaultCodec If the job outputs are compressed, how should they be compressed?

压缩在大数据中的使用
10、Hadoop整合压缩使用之配置文件设置
文件1、core-site.xml
压缩在大数据中的使用

io.compression.codecs
org.apache.hadoop.io.compress.GzipCodec,
org.apache.hadoop.io.compress.DefaultCodec,
org.apache.hadoop.io.compress.BZip2Codec,
org.apache.hadoop.io.compress.SnappyCodec

文件2、mapred-site.xml文件
压缩在大数据中的使用
codec这个压缩格式看个人可以换的
mapreduce.map.output.compress=true
mapreduce.map.out.compree.codec=org.apache.hadoop.io.compress.BZip2Codec

mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.GzipCodec

配置完后一定要重启HDFS/mapreduces

测试:hadoop jar example…jar wordcount /input/wc.input /output/
查看:Hadoop fs -text /output/part*