我认为这是一个非常基本的问题,但为了得到一个清晰的图片,我有几个问题可以请任何人澄清一下吗?
答案 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进程。