2015-10-16 112 views
2

我認爲這是一個非常基本的問題,但要得到一個清晰的圖片我有幾個問題任何人都可以請澄清?總JVM在Hadoop集羣上運行? Hadoop中的JVM生命週期

  1. 在Hadoop整個羣集上運行多少個JVM?Gen1和Gen2?
  2. 例如,如果我有10個節點羣集,那麼應爲單個節點以及整個10個節點羣集運行的JVM的最大值或最小值是多少?
  3. 我們可以在運行時控制JVM上的創建嗎?假如我有更多的JVM,我的數據能夠被快速處理,並且可以重複使用相同的JVM,或者我的作業完成後我需要銷燬它(任何JVM生命週期圖表)
  4. JVM如何創建並用於Hadoop。 JVM在hadoop集羣中的重要作用是什麼(儘管所有東西都在JVM上運行)。 JVM的

回答

1

認爲是一個抽象的計算機上基於Java的服務可以run.To回答您的問題: -

1)爲簡單起見讓我們假設的目的只有一個存儲和一個處理節點

的Hadoop 1.0

有總4個服務NameNode,SecondaryNameNode,DataNode,JobTracker和TaskTracker.Each服務在JVM上運行。 4個JVM,分別爲 NameNode,SecondaryNameNode,DataNode,JobTracker。

一個的TaskTracker是接受任務的集羣中的服務 - 地圖,減少和整理操作 - 從JobTracker.The的TaskTracker 產生一個獨立的JVM進程做實際的工作。

假設任務跟蹤器只有一個插槽可用於執行實際工作,即運行映射器或縮減器。

因此,的JVM = NameNode的(1)+ SecondaryNameNode(1)+數據管理部(1)+的JobTracker(1)+的TaskTracker(2)=

的Hadoop 2.0

總數總服務 - 的Namenode,SecondaryNameNode,資源管理器(ResourceManager中,ApplicationManager和調度器),節點 管理器(ApplicationMaster和容器),的Datanode

1對於每個服務,因此JVM: -

(1)+應用程序管理器(1)+調度器(1)+節點管理器(1)+應用程序主(1)+容器(1)+數據節點(1)= 9

> 處理是在容器(JVM),而節點管理器(JVM)看起來的操作之後進行。各紗線的應用都需要自己的 ApplicationMaster(JVM)

2)點一個描述分鐘數量的JVM。我們無法確定地告訴最大數量,因爲您可以繼續添加集羣中的存儲和工作節點,因此JVM的數量將會增加。

3)如果羣集中有更多資源,則可以運行多個JVM,這樣可以運行更多存儲(datanode)和處理(nodemanager和容器)服務。是的,你可以通過配置屬性來控制JVM重用mapred.job.reuse.jvm.num.tasks

4)由於在JVM上Hadoop框架運行的所有服務而已,JVM中是必不可少的。你不能創建JVM,操作系統爲你做。你只需要啓動JVM進程。

+0

是否強制每個hadoop服務(如namenode,datanode或資源管理器)每個都有一個jvm或每個hadoop服務可配置的jvms數量是多少? – Abhisekh

+2

namenode,datanode和其他任何資源管理器都是惡魔程序,這些服務總是在羣集中運行。我不認爲在集羣中運行單個惡魔將會有多個JVM。 –

+0

@Abhisekh ...這樣想 - 你的Helloworld java程序如何在兩個以上的JVM中同時運行?.... Namenode等是Java應用程序,因此只能在單個JVM中運行。 – 2017-09-19 02:54:38