
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配置文件
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)