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 如果有需求的话再进行分组,然后输出结果;

  • 相关阅读:
    MapGuide 资源
    mac 安装brew
    mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
    一文深入讲解redis和couchbase的区别
    mac 显示 sh3.2# 的
    DBA整理的万字详解MySQL性能优化,值得收藏!
    redis和couchbase的比较
    && 运算符的使用
    freeotp 安装及使用过程
    Couchbase vs Redis,究竟哪个更胜一筹?
  • 原文地址:https://www.cnblogs.com/wnwn/p/12620205.html
Copyright © 2011-2022 走看看