2015-11-03 72 views
2

您能否幫我解決以下情況。在Hadoop 2.x中Secondary NameNode的使用率和高可用性

1)在使用Hadoop V2時,我們是否在生產環境中使用Secondary NameNode?

2)對於Hadoop的V2,假設我們使用muliple NameNodes在高可用性和當編輯日誌文件會變得十分巨大主動/被動連接,

怎樣的編輯日誌被應用到的FsImage?如果是這樣,那麼在啓動Namenode期間,將巨大的編輯日誌應用於Namenode會很耗時? (我們有hadoop v1中的Secondary NameNode來解決這個問題)

回答

3

解答您的疑問:

1)在使用Hadoop V2,我們在生產中使用的環境中學的NameNode?

如果您爲「名爲節點的高可用性」部署StandByName節點,則在生產環境中不需要次要名稱節點。

2)在沒有輔助節點的情況下,編輯日誌如何應用於fsimage?

要回答此查詢,您必須以兩種不同方式瞭解Hadoop中實現的可用性如何。 :High Availability with QJMHigh Availability with NFS Federation

但在這兩種方法,QJM(仲裁日誌管理器)是優選的。

在典型的HA羣集中,兩臺獨立的機器配置爲NameNode。在任何時候,只有一個NameNodes處於Active狀態,另一個處於Standby狀態。活動NameNode負責羣集中的所有客戶端操作,而Standby僅充當從服務器,並保持足夠的狀態以在必要時提供快速故障轉移。

爲了使備用節點保持其與活動節點的狀態同步,兩個節點都與一組稱爲「JournalNodes」(JN)的獨立守護進程進行通信。

當活動節點執行任何名稱空間修改時,它會將修改記錄持久記錄到大多數這些JN中。備用節點從JN讀取這些編輯並應用於其自己的名稱空間。

如果發生故障切換,備用服務器將確保在將自己提升爲活動狀態之前,它已從JounalNodes中讀取所有編輯。這確保了在故障轉移發生之前命名空間狀態已完全同步。

對於一次只有一個NameNode處於活動狀態的HA羣集而言,至關重要。 ZooKeeper已被用於避免分裂大腦情況,因此名稱節點狀態不會因故障轉移而發生分化。

我已經在我的其他的StackOverflow問題,在詳細地解釋故障轉移過程的名稱節點:How does Hadoop Namenode failover process works?

+0

非常感謝您的詳細解釋。 – avinash

1

1)在使用Hadoop V2時,我們是否在生產環境中使用Secondary NameNode?

它完全取決於您的生產環境設置。如果您將Hadoop V2與HA一起使用,則您不需要生產中的Secondary NameNode,因爲您的Slave NameNode將以最佳方式執行與Secondary NameNode相同的任務。但是如果您的生產設置不利用NameNode HA,則必須使用Secondary NameNode進行點校驗。請參閱Understanding Hadoop 2.x Architecture和它的惡魔的更多信息。

2)對於Hadoop的V2,假設我們使用了高可用性和當編輯日誌文件主動/被動連接muliple NameNodes越來越龐大,

按我這裏是瞭解你的主要關注「Hadoop V2中的NameNode HA如何管理編輯日誌?」

下面是答案:編輯日誌管理可以通過仲裁日誌管理器(QJM)或NFS共享存儲

隨着QJM來完成,有魔叫JournalNode(JN)的組活躍的NameNode進行通信。該組不斷尋找由活動的NameNode完成的任何更新並保持該狀態。 StandBy NameNode不斷從JN獲取編輯日誌更新並維護更新後的editlog文件。

使用NFS共享存儲,Active NameNode和StandBy NameNode都可以訪問共享存儲(即網絡文件系統)上的特定目錄。在由NameNode完成任何更新的情況下,它將事件記錄到共享目錄。另一方面StandBy NameNode正在尋找在同一共享目錄上的更新,並同時更新編輯日誌。

我希望這有助於...

+0

非常感謝您的詳細解釋。 – avinash