Hadoop集群上运行的JVM总数?Hadoop中的JVM生命周期

4

我认为这是一个非常基本的问题,但为了清楚地了解情况,我有一些问题,请问有人能澄清吗?

  1. 在Hadoop整个集群中运行多少个总JVM-Gen1和Gen2?
  2. 例如,如果我有10个节点的集群,单个节点和整个10个节点集群应该运行的JVM的最大或最小数量是什么?
  3. 我们可以在运行时控制JVM的创建。例如,如果我有更多的JVM,我的数据可以被快速处理,并且我可以重用相同的JVM,还是需要在作业完成后立即销毁它(JVM生命周期的任何图表)?
  4. JVM在Hadoop中如何创建和使用。 JVM在hadoop集群中的重要角色是什么(尽管所有内容都在JVM上运行)。
1个回答

3
将JVM视为一个抽象的计算机,Java服务可以在上面运行。回答你的问题:
1)为简单起见,假设只有一个存储和一个处理节点
Hadoop 1.0: 共有4个服务NameNode、SecondaryNameNode、DataNode、JobTracker和TaskTracker。每个服务都在一个JVM上运行。NameNode、SecondaryNameNode、DataNode、JobTracker各4个JVM。
TaskTracker是集群中接受任务——Map、Reduce和Shuffle操作——从JobTracker的服务。TaskTracker会启动单独的JVM进程来执行实际工作。
假设只有一个可用的槽位让tasktracker来执行实际工作,即运行mapper或reducer。
因此,JVM总数=NameNode(1)+SecondaryNameNode(1)+DataNode(1)+JobTracker(1)+TaskTracker(2)=6。
Hadoop 2.0: 总服务:Namenode、SecondaryNameNode、ResourceManager(ResourceManager、ApplicationManager和Scheduler)、Node Manager(ApplicationMaster和Container)、Datanode。 每个服务都需要一个JVM,因此: Namenode(1)+SecondaryNameNode(1)+ResourceManager(1)+ApplicationManager(1)+Scheduler(1)+Node Manager(1)+ApplicationMaster(1)+Container(1)+Datanode(1)=9。
处理是在容器(JVM)上执行的,而Node manager(JVM)负责操作。每个Yarn应用程序都需要自己的ApplicationMaster(JVM)。
2)第一点描述了JVM的最小数量。我们无法确定最大数量,因为您可以在集群中添加存储和工作节点,因此JVM的数量会增加。
3)如果您的集群中有更多资源,您可以运行多个JVM,这样您可以同时运行更多的存储(datanode)和处理(nodemanager和container)服务。是的,您可以通过配置mapred.job.reuse.jvm.num.tasks属性来控制JVM的重用。
4)由于Hadoop框架的所有服务都只在JVM上运行,因此JVM非常重要。您不能创建JVM,操作系统会为您创建。您只需要启动JVM进程即可。

每个Hadoop服务(如NameNode、DataNode或资源管理器)是否必须有一个单独的JVM,还是每个Hadoop服务的JVM数量可配置? - Abhisekh
2
NameNode、DataNode和任何其他资源管理器都是守护程序,这些服务始终在集群中运行。我认为在集群中运行单个守护程序的JVM不会超过一个。 - Pardeep Sharma
1
@Abhisekh...这样想 - 你的Helloworld Java程序如何能够在两个以上的JVM上同时运行呢?Namenode等都是Java应用程序,因此只能在单个JVM上运行。 - user3548788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接