1. NodeManager是如何Kill掉Container的呢?
答,在DefaultContainerExecutor中,

a. 使用命令行kill一个app后,ContainerLaunch中的handler中会处理两种事件(LAUNCH_CONTAINER, CLEANUP_CONTAINER), 在CLEANUP_CONTAINER中,会调用ContainerLaunch.cleanupContainer()方法。
b. 在ContainerLaunch.cleanupContainer()方法中,首先从文件中获取container的pid (启动container的时候会把pid写到临时目录下)。 调用ContainerExecutor.signal()方法执行
kill -0 -pid
kill -15 -pid
 然后新建一个DelayedProcessKiller线程,它会调用ContainerExecutor.signal() 执行。
kill -0 -pid
kill -9 -pid
c. 为什么pid前加 "-"呢?pid前加一个 "-" 的目的是kill掉这个进程组,包括此进程与其所有子进程。
d. 执行kill的命令后会删除相应的pid文件。
e. 为什么要每次kill命令前要 kill -0 -pid呢?
 
2. Yarn的RM会通过proxy把用户的请求重定向到AppMaster上,  但从uri地址来看, 好像还是显示RM的地址,  其在代码上是如何实现的呢

答,在WebAppProxyServlet的doget中, 当遇到用户请求的时候, 会执行doget,
   它首先会获取applicationReport,  从application中获取originalTrackingUrl (一个目标url),
   如果job结束(kill, finished, failed),  会重定向到originalTrackingUrl 的页面,
   其它情况,会向appmaster(originalTrackingUrl )请求相应的数据,  获取数据后发送给客户端。
所以关键在于originalTrackingUrl 
 
 
3. 另外rm的代码中包括一个web-proxy的工程. 它是做什么的呢
答,在yarn的RM中,包括web-proxy工程,它可以启动一个单独的进程,对外提供web服务,从resourcemanager上点击正在执行的app,会跳转到yarn.web-proxy.address,这里展示正在执行的job信息,job执行结束后,会跳转到historyserver上;如果没有配置yarn.web-proxy.address,则这个功能会集成到RM中。
需要配置yarn.web-proxy.address
启动方式为./sbin/yarn-daemon.sh start proxyserver 

Yarn上的几个问题整理的更多相关文章

  1. Spark源码编译并在YARN上运行WordCount实例

    在学习一门新语言时,想必我们都是"Hello World"程序开始,类似地,分布式计算框架的一个典型实例就是WordCount程序,接触过Hadoop的人肯定都知道用MapRedu ...

  2. Apache Spark源码走读之10 -- 在YARN上运行SparkPi

    y欢迎转载,转载请注明出处,徽沪一郎. 概要 “spark已经比较头痛了,还要将其运行在yarn上,yarn是什么,我一点概念都没有哎,再怎么办啊.不要跟我讲什么原理了,能不能直接告诉我怎么将spar ...

  3. 在Yarn上运行spark-shell和spark-sql命令行

    转载自:http://lxw1234.com/archives/2015/08/448.htm 如果你已经有一个正常运行的Hadoop Yarn环境,那么只需要下载相应版本的Spark,解压之后做为S ...

  4. 转:基于IOS上MDM技术相关资料整理及汇总

    一.MDM相关知识: MDM (Mobile Device Management ),即移动设备管理.在21世纪的今天,数据是企业宝贵的资产,安全问题更是重中之重,在移动互联网时代,员工个人的设备接入 ...

  5. 运行在YARN上的MapReduce应用程序(以MapReduce为例)

    client作用:提交一个应用程序查看一个应用程序的运行状态(通过application master) 第一步:提交MR程序到ResourceManager,ResourceManager为这个应用 ...

  6. 【译】Yarn上常驻Spark-Streaming程序调优

    作者从容错.性能等方面优化了长时间运行在yarn上的spark-Streaming作业 对于长时间运行的Spark Streaming作业,一旦提交到YARN群集便需要永久运行,直到有意停止.任何中断 ...

  7. 如何在yarn上运行Hello World(一)

    1.YARN是什么 YARN  (Yet Another Resource Negotiator,另一种资源协调者) 是hadoop上的一种资源调度器,它是一个通用资源管理系统,可以为上层应用提供统一 ...

  8. 如何在yarn上运行Hello World(二)

      在之前的一篇文章我们介绍了如何编写在yarn集群提交运行应用的AM的yarnClient端,现在我们来继续介绍如何编写在yarn集群控制应用app运行的核心模块 ApplicationMaster ...

  9. FORM实现中打开图片,链接,文档(参考自itpub上一篇帖子,整理而来)

    FORM实现中打开图片,链接,文档 参考自itpub上一篇帖子,整理而来 1.添加PL程序库D2kwutil.pll 2.主要实现程序 /*过程参数说明: v_application --打开文件的应 ...

随机推荐

  1. 【分享】生成带数据的Insert语句工具(源码)

    这个工具用于导出带数据的Insert语句,方便在不同版本的数据库上导出数据.有人说sql server 2008自带导出带数据的Insert语句(连接)但是我的数据库版本没有这个选项,无奈之下自己简单 ...

  2. 简单修改 MySQL 的 root 账号密码

    首先这是一篇非常非常初级的教程. 平时为了方便,经常是直接在网上下载 PHP + MySQL 的集成环境,但有一些 MySQL 的 root 账号是没有密码的(例如大名鼎鼎的 XAMPP 就是这样), ...

  3. C/C++常用头文件及函数汇总

    转自: C/C++常用头文件及函数汇总 C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#in ...

  4. 向Array中添加选择排序

    选择排序思路 在无序区中选出最小的元素,然后将它和有序区的第一个元素交换位置. 选择排序实现 Function.prototype.method = function(name, func){ thi ...

  5. js判断浏览器滚动条是否拉到底

    $(window).scroll(function(){ // 当滚动到最底部以上n像素时, 加载新内容 if ($(document).height() - $(this).scrollTop() ...

  6. linux下在某行的前一行或后一行添加内容

    linux的sed工具是十分强大的,能很容易的实现在某关键词的前一行或后一行增加内容.今天在批量修改tomcat的日志时就用到了该功能. 一.在某行的前一行或后一行添加内容 具休操作如下: #匹配行前 ...

  7. java 验证身份证号

  8. IIS8托管WCF服务

    WCF服务程序本身不能运行,需要通过其他的宿主程序进行托管才能调用WCF服务功能,常见的宿主程序有IIS,WAS,Windows服务,当然在学习WCF技术的时候一般使用控制台应用程序或WinForm程 ...

  9. JavaScript之setcookie()讲解

    function setcookie(name,value){          var Days = 30;          var exp  = new Date();          exp ...

  10. unset之讲解

    unset (PHP 4, PHP 5) unset — 释放给定的变量 说明¶ void unset ( mixed $var [, mixed $... ] ) unset() 销毁指定的变量. ...