zoukankan      html  css  js  c++  java
  • Job作业运行流程

    job五大阶段

    InputFormat


    1.InputFormat --> FileInputFormat --> TextInputFormat

    重点:DBInputFormat、KeyValueInputFormat、TextInputFormat

    • 为每个job作业验证hdfs上数据(数据是否存在,数据相关格式)
    • 根据数据块(block)划分成一个逻辑上的split(切片)一个切片对应一个map  block-->split-->map
    • 切片的具体实现。如果文件小于128m,一个切片;如果(文件大小/128)<1.1,单独切一片。

    •  读取切片 

    Mapper


    1.核心方法

     2.自定义mapper一般都是覆盖map函数

    Shuffle


     Shuffle = Map Shuffle + Reduce Shuffle

    1.Map端的shuffle

    2.Reduce端的shuffle 

    整体来说shuffle横跨了map和reduce两个阶段。从2-7,map task和reduce task之间的数据流称为shuffle(混洗),其中过程5最能体现。

    1. 分区是在Map输出到缓冲区时(2)执行的
    2. 环形缓冲区默认100M,当数据超过80%时,就溢写到本地磁盘。注意,在缓冲区中程序会对数据进行分区,默认为哈希分区和key快排。此时(3)发生合并
    3. 当磁盘破碎文件达到一定阈值或者map端停止向缓冲区写入的时候,会将磁盘上的文件再进行一次合并(4)
    4. 通过http协议将map端的执行结果传输到reduce(5)
    5. 在reduce端执行一次合并汇总再次排序(6)

    Reduce


    三个阶段

    1.shuffle阶段

    通过http协议将多个map执行的排序结果传输汇总在一起

    2.sort阶段

    将多个map执行文件再一次合并排序

    3.SecondarySort阶段

    当启用Combiner时,map阶段也会有reduce,此时在map阶段会有一次排序,汇总到Reducer阶段时,将结果再次排序。

    核心方法

     自定义reducer时一般会重写reduce函数

     

    OutputFormat


    在TextOutputFormat中,默认的分隔符是“ ”,将结果以 key + " " +value写入文本文件


    job作业提交过程

    客户端的配置信息mapreduce.framework.name为yarn时,客户端会启动YarnRunner(yarn的客户端程序),并将mapreduce作业提交给yarn平台处理。

    1.向ResourceManager请求运行一个mapreduce程序。

    2.ResourceManager返回hdfs地址,告诉客户端将作业运行相关的资源文件上传到hdfs。

    3.客户端提交mr程序运行所需的文件(包括作业的jar包,作业的配置文件,分片信息等)到hdfs上。

    4.作业相关信息提交完成后,客户端用过调用ResourcrManager的submitApplication()方法提交作业。

    5.ResourceManager将作业传递给调度器,调度器的默认调度策略是先进先出。

    6.调度器寻找一台空闲的节点,并在该节点隔离出一个容器(container),容器中分配了cpu,内存等资源,并启动MRAppmaster进程。

    7.MRAppmaster根据需要运行多少个map任务,多少个reduce任务向ResourceManager请求资源。

    8.ResourceManager分配相应数量的容器,并告知MRAppmaster容器在哪。

    9.MRAppmaster启动maptask。

    10.maptask从HDFS获取分片数据执行map逻辑。

    11.map逻辑执行结束后,MRAppmaster启动reducetask。

    12.reducetask从maptask获取属于自己的分区数据执行reduce逻辑。

    13.reduce逻辑结束后将结果数据保存到HDFS上。

    14.mapreduce作业结束后,MRAppmaster通知ResourceManager结束自己,让ResourceManager回收所有资源。

     

  • 相关阅读:
    主页面
    EasyUI写的登录界面
    SpringMVC学习笔记二第一个小的程序
    springmvc学习笔记一框架的理解
    mybitis学习笔记
    cheng gong de daima
    JQuery中如何使用事件来出发Ajax
    按照用户名和角色查询用户liferay
    在liferay中如何使用Ajax的请求
    [奇葩说]
  • 原文地址:https://www.cnblogs.com/zqzhen/p/12732192.html
Copyright © 2011-2022 走看看