YARN是分布式资源管理,每一台机器都要去管理该台计算机的资源,Yarn负责为MapReduce程序分配运算硬件资源。每一台机器的管理者叫 NodeManager,整个集群的管理者管理着整个集群的NodeManager,叫 ResourceManager。资源调度和资源隔离是YARN作为一个资源管理系统最重要和最基础的两个功能。资源调度由 ResourceManager 完成,而资源隔离由各个DataNode实现。

YARN架构图,来源于官网:http://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-site/YARN.html

当客户端提交任务给 ResourceManager, YARN会为每个在YARN上面运行的任务生成一个应用管理者(Application Mater),Application Master根据MapReduce所需要的资源向ResourceManager申请资源,该任务在ResourceManager分配好的资源容器(container)里面运行,该资源容器在NodeManager上。

ResourceManager:处理客户端请求;启动/监控ApplicationMaster;监控NodeManager;资源分配与调度

ApplicationMaster:数据切分;为应用程序申请资源,并分配给内部任务;任务监控与容错

NodeManager:单个节点上的资源管理;处理来自ResourceManager的命令;处理来自ApplicationMaster的命令

Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息

MapReduce如何在YARN上运行

1,客户端(client)向ResourceManager提交一个应用程序任务。ResourceManager主要有两个组件:Scheduler(资源调度)和ApplicationsManager(应用管理)

2,ResourManager接收到client提交的任务(Task)后,需要为该应用创建一个应用管理者(ApplicationMaster)。ApplicationsManager负责接受作业(Task)提交,协商第一个容器来执行特定于应用程序的ApplicationMaster,并提供重新启动ApplicationMaster容器的服务。ResouManager找到一台NodeManager节点,创建一个ApplicationMaster

3,ApplicationMaster 对任务进行划分,确定需要多少资源,向 ApplicationsManager 注册已经生成 ApplicationMaster,并为任务申请资源。

4,Scheduler(资源调度)负责根据容量,队列等的熟悉限制向各种运行的应用程序分配资源。调度程序是纯调度器,它不执行监视或跟踪应用程序的状态。ResourcManager向ApplicationMaster 返回的资源就是用Container表示的.

5,ApplicationMaster 取得任务需要的资源信息后,向分配到的资源相关NodeManager分配任务。

6,各NodeManager接受到 ApplicationMaster 的命令后,NodeManager在他们的容器中启动Map Task / Reduce Task

7,每个Task都要向ApplicationMaster 报告进度状况,每个应用程序ApplicationMaster有责任从调度程序协商适当的资源容器,跟踪其状态并监视进度。

8,所有任务完成后,ApplicationMaster 向  ApplicationsManager 汇报完成任务。

客户端(client)可以通过页面监控任务进度(8088端口)

yarn的配置文件yarn-site.xml上需要根据你的实际情况更改属性参数,yarn的一些默认值如

name value description
yarn.nodemanager.resource.memory-mb 8192 Amount of physical memory, in MB, that can be allocated for containers.
yarn.nodemanager.pmem-check-enabled true Whether physical memory limits will be enforced for containers.
yarn.nodemanager.vmem-check-enabled true Whether virtual memory limits will be enforced for containers.
yarn.nodemanager.vmem-pmem-ratio 2.1 Ratio between virtual memory to physical memory when setting memory limits for containers. Container allocations are expressed in terms of physical memory, and virtual memory usage is allowed to exceed this allocation by this ratio.
yarn.nodemanager.resource.cpu-vcores 8 Number of vcores that can be allocated for containers. This is used by the RM scheduler when allocating resources for containers. This is not used to limit the number of physical cores used by YARN containers.

如果你的机器的性能没有默认的大的话请根据实际的修改掉value值,就是节点资源不够的话需要适当减小这个值,而yarn不会只能的探测节点的物理内存总量。

拓展:yarn上面的日志聚集功能配置使用:

<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-check-interval-seconds</name>
<value></value>
</property>

历史服务器historyserver

查看已经运行完成的MapReduce作业记录,比如用了多少个Map,用了多少个Reduce,作业提交时间,作业启动时间,作业完成时间等信息。

启动命令:sbin/mr-jobhistory-daemon.sh start historyserver.

Web Ui: http://hostname:19888/

停止:sbin/mr-jobhistory-daemon.sh stop historyserver.

Hadoop- 分布式资源管理YARN架构讲解的更多相关文章

  1. Hadoop 分布式文件系统:架构和设计

    引言 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统.它和现有的分布式文件系统有很多共同点.但同时,它和其他的分布式文件系统 ...

  2. 【官方文档】Hadoop分布式文件系统:架构和设计

    http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html 引言 前提和设计目标 硬件错误 流式数据访问 大规模数据集 简单的一致性模型 “移动计 ...

  3. Hadoop分布式文件系统:架构和设计

    原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html 引言 前提和设计目标 硬件错误 流式数据访问 大规模数据集 简单的一致性模型 ...

  4. Hadoop分布式资源管理器Yarn、MR运行机制剖析

    介绍YARN组件的功能及应用场景 1.ResourceManager(RM) RM是一个全局的资源管理器,集群中只有一个.它负责整个Hadoop系统的资源管理和分配,包括处理客户端请求.启动监控 Ap ...

  5. 06_Hadoop分布式文件系统HDFS架构讲解

    mr  计算框架 假如有三台机器 统领者master 01  02  03  每台机器都有过滤的应用程序 移动数据 01机== 300M  >mr 移动计算  java程序传递给各个机器(mr) ...

  6. Hadoop分布式文件系统:架构和设计要点

    原文:http://hadoop.apache.org/core/docs/current/hdfs_design.html 一.前提和设计目标 1.硬件错误是常态,而非异常情况, HDFS可能是有成 ...

  7. 基于Hadoop分布式集群YARN模式下的TensorFlowOnSpark平台搭建

    1. 介绍 在过去几年中,神经网络已经有了很壮观的进展,现在他们几乎已经是图像识别和自动翻译领域中最强者[1].为了从海量数据中获得洞察力,需要部署分布式深度学习.现有的DL框架通常需要为深度学习设置 ...

  8. Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

  9. 项目十八-Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

随机推荐

  1. 一款很实用的Memcache监控工具

    装了memcahce以后想对使用情况详细了解一下,如分配的内存够不够,都存了什么,经百度后发现这款工具灰常实用!此工具来自Memcache Pecl 中 http://pecl.php.net/pac ...

  2. bottle的几个小坑

    距离我在<web.py应用工具库:webpyext>里说要换用bottle,已经过去快两个月了--事实上在那之前我已经開始着手在换了.眼下那个用于 Backbone.js 介绍的样例程序已 ...

  3. C语言-字符串

    问题: 给出的区分大小写的字母字符的字符串,找到最大的字符串X,或者为X,或者其逆可以找到任何给定的字符串的子串 输入: 输入文件的第一行包含一个整数t(1 < = t < = 10),测 ...

  4. 一种调用dll的巧妙方法

    直接上代码,后面说应用场景 新建一个项目,引入需要调用的dll,如下 class Program { [DllImport( "soft.dll" )] static extern ...

  5. RAM和ROM和Flash ROM的区别

    转;http://openedv.com/thread-81182-1-1.html                           http://www.sohu.com/a/112676146 ...

  6. php selenium 测试验证码问题

    $this->pause(10000)这段代码用于停止程序执行,可以在这个空隙内输入验证码

  7. linux uart驱动——相关数据结构以及API(二)

    一.核心数据结构      串口驱动有3个核心数据结构,它们都定义在<#include linux/serial_core.h>1.uart_driver     uart_driver包 ...

  8. php通过curl下载远程图片实例

    <?php $url = 'http://mf1905.com/upload/video_img/df3074c98ec5124ad47c52ff59f74e04_middle.jpeg'; f ...

  9. 深入Asyncio(二)从线程到协程

    线程的真相 多线程并不是一无是处,在实际问题中,要权衡优劣势来选择多线程.多进程或是协程.协程为多线程的某些问题提供了一种解决方案,所以学习协程首先要对线程有一定了解. 多线程优点 代码可读性 多线程 ...

  10. 离线安装Cloudera Manager5.3.4与CDH5.3.4(一)

    这几天一直在安装CDH,头都搞大了,安装第三次,最终成功了. 第一次问题非常多.后面卸载了.由于没有卸载干净导致第二次安装失败. 后来索性重装系统了.直接使用了纯净系统进行安装.一个人跑到学院机房去装 ...