mapreduce的生命周期和spark

小常识:大数据基本原则:数据不移动计算移动
mapreduce的生命周期:
整个生命周期是由三个部分构成的:map task、reduce task、shuffer
map task:一个map task读取一个block的数据,(为什么只读取一个,是因为每个block都是存储在hdfs分布式存储上,如果读取两个block的数据,有一个在另外一个机器上,那么夸机器读取就影响了效率),inputSplit切分数据之后,才开始了我们的编码处理数据的(map)阶段,处理完之后把数据缓存到内存中了,一个maptask对应的内存缓冲区是100M,同时对这100M的数据进行了2:8比例的划分,然后数据不断的往80%的内存里写,当数据达到80M,才真正发生了溢写,也就是我们所说的shuffer,那80M数据不在接收数据,而是往磁盘中写数据,但是这个时候数据还在往内存中写,剩下的20M就临时接收数据。如果数据不足80M,他会检测数据流是否停止,如果停止了也会发生溢写,也就是shuffer。溢写往磁盘上输出数据的之前会先进行分区,分区会将数据中的key进行hash取值,然后将相同的hash值的key的数据放在一个磁盘小文件中,分区会记录下来,形成一个虚拟分区的小文件,里面写好了数据存放的位置,这样就知道哪个reducetask拉取数据,不是一个maptask就对应一个reducetask; 
reducetask:当数据落地到磁盘的时候,map结束,reducetask开始工作去拉取数据,reducetask也有一个内存缓冲区,在内存中进行计算,如果内存不足会再次落地磁盘,然后慢慢计算,计算完之后输出到part-00000(应该是这个)的文件中

 

spark:

sparkcore:
spark读取数据也是在hdfs上读取的,通过mapreduce的方法读取数据,sc.textfile(path)就读取过来了,由partition接收,partition的大小是和block商议后决定的,个数和block个数一致

在spark中万物皆rdd(是一个弹性分布式数据集),rdd是不存储数据的,存储的是业务逻辑
五个特性:
1.rdd是由一系列的partition组成的。
2.rdd之间具有一系列的依赖性
3.算子必须作用在partition上(算子就是用来计算的方法)
4.分区器必须作用在key,value格式的rdd上(简单的理解就是某些算子在使用的时候必须使用在k,v格式的rdd上)
5.每一个rdd都会提供一批最优的计算位置,以便于本地化计算
Spark任务调度流程:
driver的作用:1.建立连接2.心跳机制检测执行任务的服务是否存在或正常工作3.任务分发4.任务执行过程的监测5.回收任务执行结果
spark代码执行流程:
1.从分布式文件系统中加载数据
2.transformations延迟执行--针对rdd的操作(transformations是某一类算子(函数))
3.action触发执行(action也是一类算子(函数))
算子的分类:
1.transformation也就是转换算子,可以进行业务处理同时这些算子都是延迟执行的 e.g1+1再+1,而不是    1+1=2,2+1=3
2.action类的算子,执行算子,可以做业务逻辑处理,主要作用是触发之前的转换算子
3.控制算子 是做持久化使用的
算子:
1个application程序(也就是自己写的程序)是由一个或多个算子组成的
常用的算子:
count 是一个action类的算子
常用的转换算子:
map算子:输入和输出是一对一的关系
flatMap算子:输入和输出是一对多的
数据倾斜:也叫做热数据,某一个Kay对应的value太多导致某一个部分处理计算量太大,其他计算已经完成这种现象我们称之为数据倾斜。
simple算子:simple(0,2)按照比例抽取数据,里面的参数是抽取的比例。有两种数据抽取方式:1.放回式收取2.不放回式收取(常用)
groupByKey算子:根据key分组
reduceByKey算子:大的汇总聚合
sort算子:排序 sortByKeysortBy("第一个参数:函数","第二个参数:true是正序,false是倒序",第三个参数制定的分区)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值