mapreduce的工作流程

mapreduce的工作流程,第1张

1.客户端将每个block块切片(逻辑切分),每个切片都对应一个map任务,默认一个block块对应一个切片和一个map任务,split包含的信息:分片的元数据信息,包含起始位置,长度,和所在节点列表等

2.map按行读取切片数据,组成键值对,key为当前行在源文件中的字节偏移量,value为读到的字符串

3.map函数对键值对进行计算,输出<key,value,partition(分区号)>格式数据,partition指定该键值对由哪个reducer进行处理。通过分区器,key的hashcode对reducer个数取模。

4.map将kvp写入环形缓冲区内,环形缓冲区默认为100MB,阈值为80%,当环形缓冲区达到80%时,就向磁盘溢写小文件,该小文件先按照分区号排序,区号相同的再按照孙拆key进行排序,归并排序。则弊枣溢写的小文件如果达到三个,则进行归并,归并为大文件,大文件也按照分区和key进行排序,目的是降低中间结果数据量(网络传输),提升运行效率

5.如果map任务处理完毕,则reducer发送http get请求到map主机卜销上下载数据,该过程被称为洗牌shuffle

6.可以设置combinclass(需要算法满足结合律),先在map端对数据进行一个压缩,再进行传输,map任务结束,reduce任务开始

7.reduce会对洗牌获取的数据进行归并,如果有时间,会将归并好的数据落入磁盘(其他数据还在洗牌状态)

8.每个分区对应一个reduce,每个reduce按照key进行分组,每个分组调用一次reduce方法,该方法迭代计算,将结果写到hdfs输出

一、压缩分类

1、Lossless conpression(无损压缩)

压缩和解压缩过程中没有任何数据的丢失

2、Lossy conpression(有损压缩)

JPEG,MP3,MPEG 压缩和解压缩过程中有任何数据的丢失

二、扮扰压缩场景

输入

中间

输出

三、压缩注意事项

CPU是否够用,压缩加压缩都耗费资源

四、压缩格式

五、压缩比

原始文件大小1.4G

Snappy的压缩比:50%

LZ4的压缩比:49%

LZO的压缩比:48%

GZIP的压缩比:32%

BZIP2的压缩比:28%

六、总结

1、压缩陵陵比越高压缩时间就越长,不同压缩场景需要选用不同的压缩。

2、选用压缩就是空间与时间的选择

3、如果是老数据/冷数厅汪旦据就采用BZIP2压缩,如果老数据偶尔还会用的到还需考虑是否分片

4、

七、Hadoop配置Mapreduce的压缩

core-site.xml

mapred-site.xml

上面配置的是Bzip2的压缩,进入

j进行wordcount的测试

查看结果文件是带有bz2后缀的

八、Hive的压缩测试

1、创建表

2、加载数据

查看原表的大小

3、

新建表

查看新表的大小

4、

新建表

查看大小

5、

新建表

查看大小

以上为临时生效压缩,真正使用需要将具体使用哪种压缩配置到Hive配置文件


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/12335756.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存