Container启动过程主要经历三个阶段:资源本地化、启动并运行container、资源回收,其中,资源本地化指创建container工作目录,从HDFS下载运行container所需的各种资源(jar包、可执行文件等)等,而资源回收则是资源本地化的逆过程,它负责清理各种资源,它们均由ResourceLocalizationService服务完成的。启动container是由ContainersLauncher服务完成的,而运行container是由插拔式组件ContainerExecutor完成的,YARN提供了两种ContainerExecutor实现,一种是 DefaultContainerExecutor,另一种是LinuxContainerExecutor。(http://dongxicheng.org/mapreduce-nextgen/yarnmrv2-node-manager-container-setup-process/)

其实这些内容可以在nodemanager进程的日志中看到。container的生命周期是这样的:

nm先去申请资源,然后是locallizing-downloading-localized->running-exit with failure(success)—>kill->clearnup

下图是我截自一个container在本地执行失败的图,它被kill啦,发生了系统转储,可以看到有javacore,core dump,trc 和heapdump等文件。

启动Container是由ContainersLauncher完成的,该过程主要工作是将运行container对应的完整shell命令写到私有目录下的launch_container.sh中,并将token文件写到container_tokens中。之所以要将container运行命令写到launch_container.sh中,然后通过运行shell脚本的形式运行container,主要是因为直接执行命令可能会有些特殊符号不识别。

2015-12-04 17:09:11,395 INFO org.apache.hadoop.mapred.ShuffleHandler: Added token for job_1448915696877_6244
2015-12-04 17:09:11,396 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container: Container container_1448915696877_6244_01_000160 transitioned from LOCALIZING to LOCALIZED
2015-12-04 17:09:11,438 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container: Container container_1448915696877_6244_01_000160 transitioned from LOCALIZED to RUNNING
2015-12-04 17:09:11,451 INFO org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor: launchContainer: [nice, -n, 0, bash,
/data4/ochadoop/pseudo-dist/yarn/local/usercache/ochadoop/appcache/application_1448915696877_6244/
container_1448915696877_6244_01_000160/default_container_executor.sh]

像这些被kill掉的container,产生的文件不会被自动清理,需要我们手工清理,这也是需要注意的一件事情。

最新文章

  1. 如何利用脚本实现MySQL的快速部署以及一机多实例的部署
  2. Java性能调优
  3. Win7精简成功后的总结
  4. NGUI UIToggle
  5. android 给空白包签名
  6. android 中怎么保存当前按钮的状态?就是退出后重新进入还是上一次离开的状态
  7. iOS开发笔记系列-基础3(多态、动态类型和动态绑定)
  8. Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)
  9. 非常不错的MySQL优化的8条经验
  10. 关于OC和Swift使用GIT创建项目
  11. IBM openblockchain学习(四)--crypto源代码分析
  12. iOS 类似朋友圈的图片浏览器SDPhotoBrowser
  13. ASP.NET Core学习之四 在CentOS上部署.net core
  14. 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型
  15. HBase2实战:HBase Flink和Kafka整合
  16. Numpy 数组属性
  17. TCP简介(一)
  18. MySQL累积求和
  19. GTK 菜单的创建详解
  20. 《算法》第四章部分程序 part 10

热门文章

  1. struts原理
  2. ajax的再次封装!
  3. js的动态加载、缓存、更新以及复用(一)
  4. Eclipse中的Web项目自动部署到Tomcat
  5. 强大的JavaScript动画图形库mo.js
  6. Navicat for Oracle实现连接Oracle
  7. ADN用户的产品激活方法
  8. 操作系统开发系列—13.d.多进程 ●
  9. 如何让光标处于EditText的末尾
  10. 找window的三种方法