mapreduce简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/firstchange/article/details/78567918

MapReduce

  • 为什么叫MapReduce

    map和reduce,见名知意
    MapTask和ReduceTask
    
  • MR语义

    “相同”的key为一组,调用一次reduce方法,方法内迭代这一组数据进行计算
    
  • 理解

    Map
        读懂数据
        映射为KV模型
        并行分布式
        计算向数据移动
    Reduce
        数据全量/分量加工
        Reduce中可以包含不同的key
        相同的Key汇聚到一个Reduce中
        相同的Key调用一次reduce方法
            排序实现key的汇聚
    K,V使用自定义数据类型
        作为参数传递,节省开发成本,提高程序自由度
        Writable序列化:使能分布式程序数据交互
        Comparable比较器:实现具体排序(字典序,数值序等)
    
  • MapReduce1.x

    JobTracker
        核心,主,单点
        调度所有的作业
        监控整个集群的资源负载
    TaskTracker
        从,自身节点资源管理
        和JobTracker心跳,汇报资源,获取Task
    Client
        作业为单位
        规划作业计算分布
        提交作业资源到HDFS
        最终提交作业到JobTracker
    弊端:
        JobTracker:负载过重,单点故障
        资源管理与计算调度强耦合,其他计算框架需要重复实现资源管理
        不同框架对资源不能全局管理
    执行过程
        客户端规划清单
        jobTracker作为管理进程
            负责资源管理和任务调度
        TaskTracker和jobTracker有心跳
    
  • MapReduce2.x

    On Yarn
    YARN:解耦资源与计算
        ResourceManager
            主,核心
            集群节点资源管理
        NodeManager
            与RM汇报资源
            管理Container生命周期
            计算框架中的角色都以Container表示
        Container:【节点NM,CPU,MEM,I/O大小,启动命令】
            默认NodeManager启动线程监控Container大小,超出申请资源额度,kill
            支持Linux内核的Cgroup
    MR :
        MR-ApplicationMaster-Container
        作业为单位,避免单点故障,负载到不同的节点
        创建Task需要和RM申请资源(Container)
        Task-Container
    Client:
        RM-Client:请求资源创建AM
        AM-Client:与AM交互
    执行过程
        client和ResourceManager通信,将处理文件信息发给ResourceManager
        RM和NM心跳通信,知道哪台服务器资源多,进行任务分配
        DataNode服务器开启Container,并在container中开启AppM
        appM负责任务调度
    
  • Yarn

    Hadoop 2.0新引入的资源管理系统,直接从MRv1演化而来的;
        核心思想
            核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现
        ResourceManager
            ResourceManager:负责整个集群的资源管理和调度
        ApplicationMaster
            ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等
    优点
        YARN的引入,使得多个计算框架可运行在一个集群中
        每个应用程序对应一个ApplicationMaster
        目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等
    

猜你喜欢

转载自blog.csdn.net/firstchange/article/details/78567918