zoukankan      html  css  js  c++  java
  • hadoop-MapReduce工作流程

    1.MapReduce进程

      一个完整的MapReduce程序在分布式运行时有三类实例过程

      1.1 MrAppMaster:负责整个程序的过程调度及状态协调;

      1.2 MapTask:负责map节点的整个数据处理流程;

      1.3 ReduceTask:负责reduce阶段的整个数据处理流程;

    2.工作流程图

      

       

    3.过程详解

      3.1 源文件,也就是多个文本文件;

      3.2 形成一个job等准备工作;

      3.3 提交切片信息;

      3.4 计算出mapTask个数; 

      3.5 默认使用TextInputFormat从源文件读取信息;

      3.6 经过mapper逻辑分成key,value格式;

      3.7 mapTask手机网民的map()方式输出的KVUI,放到内存缓冲区,Shuffle中的缓冲区大小会影响MapReduce程序的执行效率,原则上说,缓冲区越大,磁盘IO的次数越少,执行速度就越快;缓冲区的大小可以通过参数调整,参数:io.sort.mb,默认100M,当到达百分之八十的时候就会溢出;

      3.8 从内存缓冲区不断溢出本地磁盘文件,可能会溢出多个文件,溢出的过程会执行分区,排序,溢出到本地磁盘文件已经是分区排序好的,然后会支持combiner逻辑代码;

      3.9 多个溢出文件会被合并成大的溢出文件;

      3.10 reducetask根据自己的分区号,去各个mapTask机器上区相应的结果分区数据;

      3.11 reducetask会取出同一个分区的来自不同mapTask的结果文件,reducetask会将这些文件在进行合并(归并排序);

      3.12 合并成大文件后,shuffle的过程也就结束了,后面进入reducetask的逻辑运算过程(从文件中取出一个一个的键值对group,调用用户自定义的reduce()方法);

      3.13 如果有需求的话再进行分组,然后输出结果;

  • 相关阅读:
    go语言基础之闭包捕获外部变量特点
    go语言基础之基匿名函数本语法和闭包
    go语言基础之回调函数
    go语言基础之函数类型
    go语言基础之递归实现数字累加
    go语言基础之递归函数的调用流程
    go语言基础之普通函数的调用流程
    maven install 打包 报错 Cannot run program "gpg.exe": CreateProcess error
    ELK&H3c监控篇
    机房监控中的网络设备监控到底是怎样的?
  • 原文地址:https://www.cnblogs.com/wnwn/p/12620205.html
Copyright © 2011-2022 走看看