YARN分布式资源管理系统

组成:

  ResourceManager:YARN的资源管理器,主节点,通过NodeManager管理集群中所有的资源

  NodeManager:YARN的节点管理器,从节点,通过container管理资源,一个dataNode对应一个NodeManager

  Container:包装资源,CPU/内存/IO

  容器:最小的资源单位,1GB内存,一个虚拟核心

  Master:协调MapReduce作业中任务的运行

Application Master和MapReduce任务运行于容器中,这些容器由ResourceManager调度,由nodemanager管理

yarn工作流程

  1.client端向ResourceManager提交应用程序, 也就是client端会将 jar包,配置文件,切片等数据上传到hdfs上的某路径下;
  2. resourceManager将此应用程序添加到任务队列中;
  3. 等待资源充沛时, resourceManager为该应用程序分配第一个container,在这个container中启动应用程序的ApplicationMaster;
  4. ApplicationMaster首先向ResourceManager注册,用户可以直接通过ResourceManager查看应用程序的运行状态, 还会进行分片等工作, 之后向ResourceManager申请运行任务所需的资源;
  5. ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源, 发送命令让NodeManager创建container, 之后执行task;
  6. ApplicationMaster监控job执行作业, 必要时候进行容错处理, 直到ApplicationMaster检测到job完成后, 向ResourceManager通知, 注销自己

作业提交流程

  1.取号,向resourcemanager申请一个新的application ID,用于MapReduce作业的ID
  2.检查作业的输出,如果没有指定输出或者路径已经存在(路径存在时会覆盖),则不提交作业,并且抛出异常
  3.检查作业的输入并计算输入切片,如果不能计算切片(如:输入路径不存在等),不提交作业,抛出异常
  4.拷贝jar包,配置文件,计算好的切片到共享文件系统的以作业ID命名的目录中,作业的jar包默认副本数量为10,nademanager如果运行作业中的任务时,会有很多副本可以访问
  5.调用resourcemanager的submitApplication方法提交作业
  6.resourcemanager挑选一台NodeManager,该NodeManager分配容器(Container)并在此容器上启动application master进程,读取客户端上传的资源,并计算需要多少map任务和reduce任务,向resourceManager为map任务申请资源
reduce任务可以运行于集群中的任意位置,而map任务会有本地读取数据的限制。
  7.当map任务的完成度达到百分之五的时候,再向resourceManager为reduce任务申请资源
  8.所有的reduce任务运行完成之后,MRAppMaster会通知客户端作业完成。

YARN-MapReduce的作业提交流程的更多相关文章

  1. YARN作业提交流程剖析

    YARN(MapReduce2) Yet Another Resource Negotiator / YARN Application Resource Negotiator对于节点数超出4000的大 ...

  2. Spark运行架构及作业提交流程

    1.yarn-cluster模式: (1)client客户端提交spark Application应用程序到yarn集群. (2)ResourceManager收到了请求后,在集群中选择一个NodeM ...

  3. Hadoop2.x Yarn作业提交(客户端)

    转自:http://blog.csdn.net/lihm0_1/article/details/22186833 YARN作业提交的客户端仍然使用RunJar类,和MR1一样,可参考 http://b ...

  4. YARN(MapReduce 2)运行MapReduce的过程-源码分析

    这是我的分析,当然查阅书籍和网络.如有什么不对的,请各位批评指正.以下的类有的并不完全,只列出重要的方法. 如要转载,请注上作者以及出处. 一.源码阅读环境 需要安装jdk1.7.0版本及其以上版本, ...

  5. hadoop2.7之作业提交详解(上)

    根据wordcount进行分析: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; impo ...

  6. MapReduce简述、工作流程及新旧API对照

    什么是MapReduce? 你想数出一摞牌中有多少张黑桃.直观方式是一张一张检查而且数出有多少张是黑桃. MapReduce方法则是: 1. 给在座的全部玩家中分配这摞牌. 2. 让每一个玩家数自己手 ...

  7. Spark:三种任务提交流程standalone、yarn-cluster、yarn-client

    spark的runtime参考:Spark:Yarn-cluster和Yarn-client区别与联系浪尖分享资料 standalone Spark可以通过部署与Yarn的架构类似的框架来提供自己的集 ...

  8. MapReduce源码分析之新API作业提交(二):连接集群

    MapReduce作业提交时连接集群是通过Job的connect()方法实现的,它实际上是构造集群Cluster实例cluster,代码如下: private synchronized void co ...

  9. 4 weekend110的YARN的通用性意义 + yarn的job提交流程

    Mr程序写完之后,提交给yarn,yarn会产生一个MRAppMaster,想说的是,yarn变得很 通用,yarn集群上,不光可以跑mr程序,还可以跑各种运算模型. 海量批处理,mapreduce ...

随机推荐

  1. 反射(Reflection)

    Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...

  2. 4. Validator校验器的五大核心组件,一个都不能少

    困难是弹簧,你弱它就强.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的 ...

  3. oracle 存储过程深入学习与应用

    对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入. --1.存储过程创建存储过程的语法: CREATE [ OR REPLACE ] PROCEDURE pro ...

  4. Learn day9 粘包\struct用法\hashlib校验\socketserver并发\模块引入\进程\join\守护进程

    1.粘包现象 总结 : 导致黏包现象的两种情况 hello,worl d (1) 在发送端,发送数据太快,频繁发送 (2) 在接收端,接收数据太慢,延迟截取 # ### 服务端 import sock ...

  5. Go语言反射(reflect)及应用

    Go语言反射(reflect)及应用 基本原理及应用场景 在编译时不知道类型的情况下,可更新变量.在运行时查看值.调用方法以及直接对它们的布局进行操作,这种机制被称为反射. 具体的应用场景大概如下: ...

  6. 写时复制集合 —— CopyOnWriteArrayList

    前言 JUC 下面还有一个系列的类,都是 CopyOnWriteXXX ,意思是写时复制,这个究竟是怎么回事?那就以 CopyOnWriteArrayList 为切入点,一起了解写时复制是怎么回事? ...

  7. .net 实现签名验签

    本人被要求实现.net的签名验签,还是个.net菜鸡,来分享下采坑过程 依然,签名验签使用的证书格式依然是pem,有关使用openssl将.p12和der转pem的命令请转到php实现签名验签 .ne ...

  8. 4 urllib和urllib2的区别

    4 urllib和urllib2的区别 这个面试官确实问过,当时答的urllib2可以Post而urllib不可以. urllib提供urlencode方法用来GET查询字符串的产生,而urllib2 ...

  9. 阿里云函数计算 VSCode 使用,及部署 Docusaurus

    代码: https://github.com/ikuokuo/start-serverless 使用简介 产品页开通服务.使用流程,如下: 新手示例,如下: 创建函数 阿里云提供了如下几种方式创建函数 ...

  10. 模拟微信小程序页面Page方法

    1.依赖 a.jQuery b.angularjs 2.page.js文件 1 var Page = function (options) { 2 var myApp = angular.module ...