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

时间:2015-10-16 08:45:57

标签: java hadoop jvm

我认为这是一个非常基本的问题,但为了得到一个清晰的图片,我有几个问题可以请任何人澄清一下吗?

  1. 在Hadoop整个群集上运行多少总JVM - Gen1和Gen2?
  2. 例如,如果我有10个节点集群,那么对于单个节点以及整个10节点集群应该运行的JVM的最大值或最小值是多少?
  3. 我们可以在运行时控制JVM上的创建。假设我有更多的JVM,我的数据可以快速处理,并且我可以重用相同的JVM,或者我需要在我的Job完成后立即销毁它。(任何JVM生命周期图?)
  4. JVM如何在Hadoop中精确创建和使用。 JVM在hadoop集群中的重要作用是什么(尽管一切都在JVM上运行)。

1 个答案:

答案 0 :(得分:3)

将JVM想象成一个可以运行基于java的服务的抽象计算机。回答你的问题: -

1)为简单起见,假设只有一个存储和一个处理节点

  
    

Hadoop 1.0

         

共有4项服务NameNode,SecondaryNameNode,DataNode,JobTracker和TaskTracker.Each服务在JVM上运行。 4个JVM用于     NameNode,SecondaryNameNode,DataNode,JobTracker each。

         

TaskTracker是集群中的一项服务,它接受来自JobTracker的任务 - Map,Reduce和Shuffle操作.TaskTracker     产生一个单独的JVM进程来完成实际的工作。

         

假设tasktracker只有一个可用于执行实际工作的插槽,即运行映射器或减速器。

         

因此,JVM的总数= NameNode(1)+ SecondaryNameNode(1)+ DataNode(1)+ JobTracker(1)+ TaskTracker(2)=     6

         

Hadoop 2.0

         

总服务 - Namenode,SecondaryNameNode,资源管理器(ResourceManager,ApplicationManager和Scheduler),Node     经理(ApplicationMaster和Container),Datanode

         

每个服务1个JVM,因此: -

         

Namenode(1)+ SecondaryNameNode(1)+ ResourceManager(1)+ ApplicationManager(1)+ Scheduler(1)+ Node Manager(1)+ ApplicationMaster(1)+ Container(1)+ Datanode(1)= 9

  
     

>    处理在容器(JVM)上执行,而节点管理器(JVM)负责操作。每个纱线应用程序都需要自己的   ApplicationMaster(JVM)

2)第一点描述最小数量的JVM。我们无法确定地告诉最大数量,因为您可以继续在群集中添加存储和工作节点,因此JVM的数量将会增加。

3)如果群集中有更多资源,则可以运行多个JVM,这样就可以运行更多存储(datanode)和处理(nodemanager和容器)服务。是的,您可以通过配置属性mapred.job.reuse.jvm.num.tasks

来控制JVM重用

4)由于hadoop框架的所有服务仅在JVM上运行,因此JVM是必不可少的。您无法创建JVM,操作系统会为您执行此操作。您只需要启动JVM进程。