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

Java Hadoop集群上运行的JVM总数?Hadoop中的JVM生命周期,java,hadoop,jvm,Java,Hadoop,Jvm,我认为这是一个非常基本的问题,但为了弄清楚我有几个问题,谁能澄清一下 Hadoop整个集群(Gen1和Gen2)上总共运行了多少个JVM 例如,如果我有10个节点的集群,那么对于单个节点和整个10个节点的集群,JVM应该运行的最大或最小数量是多少 我们可以在运行时控制JVM上的创建。比如说,如果我有更多的JVM,我的数据可以快速处理吗?我可以重用同一个JVM吗?或者我需要在工作完成后立即销毁它。(有JVM生命周期图吗?) JVM是如何准确创建并在Hadoop中使用的。JVM在hadoop集群中的

我认为这是一个非常基本的问题,但为了弄清楚我有几个问题,谁能澄清一下

  • Hadoop整个集群(Gen1和Gen2)上总共运行了多少个JVM
  • 例如,如果我有10个节点的集群,那么对于单个节点和整个10个节点的集群,JVM应该运行的最大或最小数量是多少
  • 我们可以在运行时控制JVM上的创建。比如说,如果我有更多的JVM,我的数据可以快速处理吗?我可以重用同一个JVM吗?或者我需要在工作完成后立即销毁它。(有JVM生命周期图吗?)
  • JVM是如何准确创建并在Hadoop中使用的。JVM在hadoop集群中的重要作用是什么(尽管一切都在JVM上运行)

  • 把JVM想象成一个抽象的计算机器,基于java的服务可以在它上面运行。回答你的问题:-

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

    Hadoop 1.0

    总共有4个服务NameNode、SecondaryNameNode、DataNode、JobTracker和TaskTracker。每个服务都在JVM上运行。4个JVM用于 NameNode、SecondaryNameNode、DataNode、JobTracker各一个

    TaskTracker是群集中的一项服务,它从JobTracker接受任务—映射、减少和无序移动操作 生成一个单独的JVM进程来执行实际工作

    假设tasktracker只有一个可用插槽来执行实际工作,即运行mapper或reducer

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

    Hadoop 2.0

    总服务-Namenode、SecondaryNameNode、资源管理器(ResourceManager、ApplicationManager和Scheduler)、节点 数据节点管理器(应用程序管理员和容器)

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

    Namenode(1)+SecondaryNameNode(1)+ResourceManager(1)+ApplicationManager(1)+调度器(1)+节点管理器(1)+ApplicationMaster(1)+容器(1)+Datanode(1)=9

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

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

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


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

    是否强制要求每个hadoop服务(如namenode、datanode或resource manager)都有一个JVM,或者每个hadoop服务的JVM数是否可配置?namenode,datanode和任何其他资源管理器都是demon程序,这些服务总是在集群中运行。我认为集群中运行的单个demon不会有多个JVM。@Abhisekh…这样想吧-您的Helloworld java程序怎么能同时在两个以上的JVM中运行?…Namenode等都是java应用程序,因此只能在单个JVM中运行。