有人能帮我理解YARN中JVM和容器之间的关系吗?
- JVM是如何创建的,是不是每个任务都有一个JVM?多个任务可以同时在同一JVM中运行吗?(我知道ubetasking,其中许多任务(maps/reduce)可以一个接一个地在同一JVM中运行)
- 是否每个容器都有一个JVM?还是单个JVM中的多个容器?或者JVM和容器之间没有关系
- 当资源管理器为一个作业分配容器时,同一作业中的多个任务是否会将同一容器用于在同一节点中运行的任务?还是根据可用性为每个任务单独设置容器
指向一些有用链接的指针也会有所帮助。
是否每个容器都有一个JVM?还是单个JVM中的多个容器?或者JVM和容器之间没有关系?
当然存在一种关系,而且是一对一的。对于每个需要创建的容器,都会生成一个新的java进程(JVM)。
现在,如果您不是在uber模式下运行,请考虑以下内容:-
JVM是如何创建的,是不是每个任务都有一个JVM?多个任务可以同时在同一JVM中运行吗?(我知道ubetasking,其中许多任务(maps/reduce)可以一个接一个地在同一JVM中运行)。
请参阅,任务计划在群集中的某个节点上运行。根据任务的需求(内存和cpu),决定容器的容量。此外,你可以在下面的链接中找到某些参数。
每个任务尝试都在JVM上进行调度。
当资源管理器为一个作业分配容器时,同一作业中的多个任务是否对在同一节点中运行的任务使用同一容器?还是根据可用性为每个任务单独设置容器?
根据集群中的资源可用性为每个任务生成单独的容器。
以下是一些非常有用的链接-
http://ercoppa.github.io/HadoopInternals/AnatomyMapReduceJob.html
https://blog.cloudera.com/blog/2015/09/untangling-apache-hadoop-yarn-part-1/
http://blog.cloudera.com/blog/2014/04/apache-hadoop-yarn-avoiding-6-time-consuming-gotchas/