zoukankan      html  css  js  c++  java
  • 深入理解hadoop之MapReduce

    与HDFS一样,Hadoop MapReduce也是采用了Master/Slaves(M/S)架构。主要组件有Client、JobTracker、TaskTracker和Task。下面分别对几个组件介绍

      

    (1).Client:用户编写的MapReduce程序通过Client提交到JobTracker端;同时,用户可以通过Client端提供的接口查看作业运行状态。在Hadoop内部用Job表示MapReduce程序。一个MapReduce程序可对应若干个作业,而且每个作业会被分解为若干个Map/Reduce任务

    (2)Job Tracker:主要负责资源监控和作业的调度。JobTracker监控所有TaskTracker与作业的健康状况,一旦发现失败情况后,就会将相应的任务转移到其他节点上去,同时JobTracker会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,任务调度器会在资源出现空闲的时候,选择合适的任务使用这些资源。任务调度器是一个可以插拔的资源,用户可以根据自己需要的需要设计相应的资源调度器

    (3)TaskTracker:周期性的通过Heartbeat将本节点的资源使用情况和任务运行进度发送给JobTracker,同时会接收JobTracker发送来的命令并执行相应的操作。TaskTracker使用slot等量划分本节点的资源量。slot代表计算资源。一个Task获取一个slot后才有机会运行,而Hadoop调度器的作用是将多个TaskTracker上的空闲slot分配给Task使用,slot分为Map slot和Reduce slot两种,分别提供Map Task和Reduce Task使用。TaskTracker通过slot数目限定Task的并发度

    (4)Task:分为Map Task和Reduce Task两种,均由Task Tracker启动。因为HDFS以固定大小的block为基本单位进行存储数据,对于MapReduce而言,其处理单位是split。split与block关系对应为下图,split是一个逻辑概念,他只包含一些元数据信息,比如数据起始位置、数据长度、数据所在的节点等信息。划分方法由用户自己决定,但是需要注意的是:split的多少决定了Map Task的数目,因为每个split会交给一个Map Task进行执行

    (5)Map Task执行的过程如下图所示。Map Task先对split进行迭代解析成一个个key/value对,依次调用用户自定义的map()函数进行处理,最终将临时结果存放到磁盘上,其中临时数据被划分成一个个partition,每个partition将被一个Reduce Task处理。

    Reduce Task执行的过程如下图所示。也分为三个阶段:(1)从远程节点读取Map Task中间结果(称之为shuffle阶段)

                              (2)按照key对key/value对进行排序(称之为Sort阶段)

                              (3)依次读取<key,value list>,调用用户自定义的reduce()函数,将最终结果存放到HDFS上。

  • 相关阅读:
    使用Myeclipse + SVN + TaoCode 免费实现项目版本控制的详细教程
    国内的代码托管服务
    国内可用的SVN和Git代码托管网站汇总
    需求调研与分析流程
    如何做好新项目的需求调研?(一)
    如何进行有效的需求调研
    weblogic和tomcat
    同步变量也是变量
    并发编程的三个管理
    机器学习
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/9647375.html
Copyright © 2011-2022 走看看