hadoop中的MapReduce,详解(带自己画的图 )

本文介绍了Hadoop中的MapReduce核心思想、设计构思及其运行流程。MapReduce通过“分而治之”的策略,将任务分解为MapTask和ReduceTask进行并行处理。Map阶段包括文件切分、行读取、用户自定义map函数、数据分区和写入环形缓冲区。Reduce阶段涉及数据拉取、merge合并、排序和reduce方法调用。Shuffle阶段则包括collect、spill、map的merge、copy、reduce的merge和sort六个阶段。文章还探讨了Shuffle优化、压缩和切片大小调节等技巧。
摘要由CSDN通过智能技术生成

写在前面: 如果本文有错误的地方还望大佬指出,小弟不胜感激.

  1. MapReduce的框架介绍
    1.1. 说道mapreduce不得不说一下他的设计思想
    MapReduce的核心思想就是 “分而治之” 那什么是分而治之呢?举个例子: 就比如说古代皇帝要去管理一整个国家,但是他一个人肯定是管理不过来的,然后就有了宰相,大臣等,但是这些人也管理不过来,于是就继续往下分,就有了县官等等. 由县官将每个县的问题上报给大臣,然后又有大臣上报给宰相或者皇帝.这里我们可以理解成两个mapreduce,县官到大臣的过程中,县官是map,大臣是reduce,然后大臣到宰相的过程中大臣是map,宰相是reduce.(有点啰嗦了~~)
    Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系
    Reduce负责“”,即对map阶段的结果进行全局汇总
    1.2. 那么在hadoop中MapReduce是怎样的设计构思了
    第一点: 继承了mapreduce的思想.
    第二点: 简化并行计算的编程模型, 降低开发并行应用的入门门槛.
    1.3. 那么MapReduce在hadoop上的运行流程是什么呢?
    第一步: 将编写好的代码提交给resourceManager
    第二步: resourceManager上会有一个ApplicationManager接收任务,它收到后会在NodeManager上创建一个ApplicationMaster进程
    第三步: ApplicationMaster也不知道哪些节点上有空余的资源,所有它回去找resourceManager中的ResourceScheduler申请资源列表
    第四步: ApplicationMaster拿到资源列表后知道哪里有可用的资源了, 于是就去其他空余的NodeManager上创建MapTask和ReduceTask任务
    第五步: MapTask和ReduceTask任务会定时给ApplicationMaster上报任务进度,ApplicationMaster会定时给client端上报任务进度和最终结果

    在这里插入图片描述

  2. 前面我们已经说了MapReduce的设计思想,那么重点来了,MapReduce的工作机制是什么呢?
    2.1. MapTask的工作机制
    第一步: 首先通过InputFormat(默认是org.ap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值