hadoop (mapreduce运行原理)

本文详细介绍了MapReduce的工作原理及执行流程,包括数据如何通过分片处理、map和reduce阶段的作用,以及shuffle过程中的关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

架构

执行流程分布式并行计算框架

默认情况下,一般情况下是一个map,还有一种情况是这个文件大过map,把文件分成一个一个块计算

map有限定最多启动多少个,系统绝定,但有20个进程,而map最多启16个,只能先执行16个在执行4个

inputsplit(数据源通过分片,有很多预定好的分割方式)-------map(有多少分片启动多少map 进程)---------record(每个map进程完成分片中的记录record)-------有多少条记录map函数就被调用几次

(1)map: 假设做word cound

    我们开发时经常要改变的是分组规则,排序规则和分区规则。

    用job.setxxx设置你实现的比较规则,比如:

(a)、实现分组则job.setgroupClass 

(b)、job.setSortClass

(c)、改变分区就得实现paratition    job.setPartitionerClass

(2)、map完成之后就是shuffle 指的是从map输出开始到reduce输入之间的过程,也就是洗牌的意思 

        map中又分几个部分

        a、map端输出:合并输出,先放在内存达到伐值(告诉它内存最多能存多少数据)溢出到磁盘,之后在合并溢写的小文件为大文件。始终要有网络请求,所以要合并文件。如果有三个小文件需要连网3次,如果合并成一个大文件,只需要边网一次。合并在输出的时候,要进行分组和排序。map输出的文件都是放在本地磁盘上。

        b、reduce端输入:分区分多少个和你的reduce有关,通过httop摘取map端的输出结果,map端输出一结束就开始拉取

 

(3)、reduce  根椐组内数据聚合统计,并输出到hdfs上,输出时默认是按key排序

mapreduce 流程结束,mapReduce运行框架运行搭建和sparrk一样使用yarn.sh,yarn.sh也是分为,主,从来解决并行式计算框架。这里边,马上执行的代码是在driver上执行, 不马上执行的是在worker上执行。对数据操作的方法有行为和变换两种。具有会话能力的是不能广播的比如:spark的sc是不能被广播的,因为sc是原来 driver和worde的连接对象。

窄依赖:不跨区的,不跨prtition (比如map)

宽依赖:是跨区的,(比如reduceByKey,groupByKey)

注意的是:能用窄依赖,尽量不用宽依赖。

有向无环图:把内存中不同的rdd进行优化调整,然后执行


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值