• MRv2 工作机制 、 公平调度器、MR压缩、边数据


        对于节点数超过 4000 的大型集群,前一节描述的 MapReduce 系统开始面临着扩展的瓶颈。 2010 年 Yahoo 的团队开始设计下一代的 MapReduce。 (Yet Another Resource Negotiator、YARN Application Resource Nefotiator)。

        YARN 将 JobTracker 的只能划分为多个独立的实体,从而改善了 MR1 面临的扩展瓶颈问题。 JobTracker 负责作业调度和任务进度监视,追踪任务、重启失败或过慢的任务和进行任务登记,例如维护计数器总数。
     
        YARN 将这两种角色划分为两个独立的守护进程  
            资源管理器:
                    管理集群上资源使用
            应用管理器:
                    管理集群上运行任务生命周期的应用管理器
        应用管理器 与 资源管理器 协商集群的计算资源  容器 (每个容器都有特定的内存上限),在这些容器上运行特定的应用程序的进程。容器由集群节点上运行的加点监视器(nodeManage)监视。
     
            事实上,MapReduce 只是 YARN 应用的一种形式、YARN 应用可以在一个集群上共存。 例如一个 MR 应用可以同时作为 MPI 应用运行。大大提高了可管理性和集群利用率。
            MPI 通信协议。的目标是高性能,大规模性,和可移植性。
     
        YARN 上的 MR 比经典的 MR 包括更多的实体:
            提交 MapReduce 的客户端。
            YARN 的资源管理器
            YARN 的节点管理器
            MapReduce 应用程序 master 负责协调运行 MapReduce 作业的任务。 它和 MapReduce 任务在容器中运行, 这些容器由资源管理器分配并由节点管理器进行管理。
    YARN 运行 MapReduce 的过程 
     
    加入了 master、优化了失败标记、 
     
    MR2 状态更新传播

     
     
    早期 Hadoop 使用先进先出调度算法运行作业
    不久后增加了优先级、 跟 dota 一样 VERY_HIGH、HIGH、NORMAL、LOW、VERY_LOW。 作业调度选择优先级时,选择最高的作业。 FIFO 调度算法中,优先级并不支持抢占,所以高优先级作业仍然受阻于之前已经开始作业、长时间运行的地优先级作业。
     
    1 公平调度器
       目标是让每个用户公平共享集群能力。 作业都放在作业池中,并不会因为某个作业数较多的用户得到更多的集群资源。 可以用 map 和 reduce 的任务槽数来定制作业池的最小容量,也可以设置每个池的权重。
       公平调度器支持抢占机制,如果一个池在特定的一段时间未能公平共享资源,就会终止运行池中获得更多资源的任务,吧空出来的槽位让给运行资源不足的作业池
     
    2  容量调度器
        针对多用户调度,容量调度器可以让用户模拟出一个使用 FIFO 调度策略独立的 MapReduce 集群。 (更细粒度控制
     
     
     
    Map 处理
     
    在将 压缩 map 输出写到磁盘的过程中对他进行压缩往往是个好主意。默认不压缩
     
    Reduce 处理
     
    使用了压缩的map输出 都必须在内存中被解压缩。 复制完所有的map 任务后。 这个阶段将合并 map 输出(排序 map 已经做完 )
     
    输入分片与 HDFS 块之间的关系
       一个文件被分成5行,行的边界与 HDFS 块边界没有对齐。 分片边界与逻辑边界(行边界)的边界对齐,所以第一个分片包含前 5行,及时第五行垮了第一块 和第二块。第二个分片 从第六行开始。
     
     
    MultipleOutputs 的 write 方法可以指定基本路径相对于输出路径进行解释,因为他可以包含文件路径分隔符(/),所以可以创建任意深度的路径
     
    延迟输出
        FileOutputFormat 的子类会产生输出文件,及时文件是空的。 因此 LazyOutputFormat 出现了。他可以保证指定分区第一条记录输出时才真正创建文件。  要使用它, 用 JobConf 和 相关的输出格式作为参数来调用 
    set OutputFormatClass() 方法即可。
     
    MR 高级特性
    Hadoop 为每个作业维护若干内置计数器。
     
     
    边数据分布
    “边数据”(side data) 是作业所需的额外的只读数据,以辅助处理主数据集。在于如何使所有 map or reduce 任务都能方便高效的使用边数据。
    1 在作业配置中 (JobConf ) 序列化边数据。   耗费内存 浪费时间
    2 分布式缓存, 
     
     
    God has given me a gift. Only one. I am the most complete fighter in the world. My whole life, I have trained. I must prove I am worthy of someting. rocky_24
  • 相关阅读:
    git提交代码到github步骤
    HTML前端标签
    16-类视图
    15-auth系统与类视图
    14-中间件和上下文处理器
    13-会话技术及表单(cookies和session)
    07-Python Django view 两种return 方法
    10-请求与响应和HTML中的from表单
    09-表关联对象及多表查询
    08-常用查询及表关系的实现
  • 原文地址:https://www.cnblogs.com/rocky24/p/5532052.html
Copyright © 2020-2023  润新知