2011-10-19 55 views
12

我是hadoop中的新成員,所以我有一些疑惑。如果主節點發生hadoop集羣發生的故障?我們可以恢復該節點而不會有任何損失當當前主節點出現故障時,是否有可能讓輔助主節點自動切換到主節點?Hadoop Datanode,namenode,secondary-namenode,job-tracker和任務跟蹤器

我們有namenode(Secondary namenode)的備份,所以我們可以在第二個namenode失敗時恢復namenode。像這樣,當datanode失敗時,我們如何才能恢復數據節點中的數據?輔助namenode只是namenode的備份而不是datenode,對吧?如果一個節點在作業完成之前失敗,那麼在作業跟蹤器中有待處理的作業,那麼作業是繼續還是從空閒節點中的第一個重新開始?

如果發生任何事情,我們如何恢復整個羣集數據?

我的最後一個問題是,我們可以在Mapreduce中使用C程序嗎(例如,mapreduce中的Bubble排序)?

預先感謝

回答

14

目前的hadoop簇具有單一故障點,這是名稱節點。

而關於二次節點isssue(來自apache wiki):

術語 「輔助名稱節點」 是有點誤導。它不是 名稱節點,因爲數據節點無法連接到名稱節點的次要名稱節點,並且在任何情況下它都不能替換主名稱節點在其失敗的情況下。

輔助名稱節點的唯一目的是執行週期性的 檢查點。輔助名稱節點定期下載當前名稱節點映像並編輯日誌文件,將它們加入到新映像中,然後將新映像上載回(主要名稱節點)和唯一名稱節點。 請參閱用戶指南。

因此,如果名稱節點發生故障,您可以重新啓動在同一個物理 節點上那麼就沒有必要關閉數據節點,只是名字節點 需要重新啓動。如果你不能再使用舊的節點,你需要將最新的圖像複製到其他地方。最新映像可以是 ,如果有 可用,則可以在故障之前的主節點上找到最新映像;或者在輔助名稱節點上。後者將是 最新的檢查點,而不會隨後編輯日誌,即最近的名稱空間修改可能會在那裏丟失。在這種情況下,您還將需要重新啓動整個集羣,其中包括 。

有一些技巧可以克服這種單點故障。如果你正在使用cloudera發行,其中一種解釋爲here。 Mapr發行版有一個different way來處理這個spof。

最後,你可以使用每一種編程語言寫地圖減少超過hadoop streaming

+5

現在很多人都稱輔助namenode爲「checkpoint節點」,這是件好事。 –

+0

任何可以讀/寫STDIN/STDOUT的編程語言都可以用於Hadoop Streaming。有幾個[框架](http://goo.gl/aaVYN)可以讓Hadoop Streaming變得更輕鬆。 –

21

雖然,回答你的問題已經太晚了,但它可能會幫助別人。

所有首先讓我介紹你與第二名稱節點:

它所包含的名字空間圖像,編輯日誌文件回來了以往一個 小時(可配置)。它的工作是合併最新名稱節點 NameSpaceImage並編輯日誌文件,將其上傳回名稱節點,作爲替換舊名稱的 。要在羣集中創建輔助NN不是 必需的。

現在來爲您解決問題...

  • 如果主節點發生故障所發生的Hadoop集羣?

支持體弱的回答,是Hadoop的具有單一故障點,使 整你當前正在運行的任務,像地圖,減少或任何其它 使用發生故障的主節點將停止。包括 客戶端在內的整個集羣將停止工作。

  • 我們可以恢復沒有任何損失的節點?

也就是說假設,在不損失它是最可能的,因爲所有的 數據(塊報告)將失去已經由數據節點發送到命名 節點後,最後一個備份採取輔助名稱節點。爲什麼我至少提到了 ,因爲如果名稱節點在成功備份後通過第二名節點運行 失敗,則它處於安全狀態。

  • 是否有可能保持一個輔助主節點自動切換到在當前一個發生故障的主?

它是由一個管理員(用戶)staright可能的。如果要自動切換 ,則必須從集羣中編寫本機代碼,代碼爲 以監控將智能地配置輔助名稱節點 的集羣,並使用新的名稱節點地址重新啓動集羣。

  • 我們有名稱節點(中學名稱節點)的備份,所以當它出現故障,我們可以從中學的NameNode恢復名稱節點。像這樣,當datanode失敗時,我們如何才能恢復數據節點中的數據?

它是關於replication factor,我們有3個(默認爲最佳實踐, 配置)都在不同的數據節點的每個文件塊的副本。 因此,如果暫時失敗,我們有2個備份數據節點。 以後的名稱節點將創建另一個數據副本,其中包含數據節點失敗的數據節點 。

  • 輔助NameNode的是名稱節點的備份只不datenode,對不對?

權。它只包含數據節點的所有元數據,如數據節點 地址,屬性包括每個數據節點的塊報告。

  • 如果一個節點工作完成之前失敗了,所以作業作業服務器之前,是工作或繼續在空閒節點從第一重啓?

HDFS將forcely嘗試繼續工作。但這又取決於 複製因子,rack awarenessother configuration由 管理員製作。但是,如果遵循Hadoop關於HDFS的最佳實踐,那麼它將不會失敗。 JobTracker將繼續複製節點地址爲 。

  • 我們怎樣才能恢復整個集羣的數據,如果有什麼事情發生?

通過重新啓動它。

  • 我的最後一個問題,我們可以使用MapReduce的C程序(例如,在MapReduce的冒泡排序)?

是的,你可以使用支持的標準文件 讀寫操作的任何編程語言。

我只是試了一下。希望它能幫助你和其他人一樣。

*建議/改進是值得歡迎的。 *

+2

非常好,清楚的解釋。看起來你是一名Hadoop架構師,並且很長一段時間都在努力研究hadoop。 –

+0

感謝@PramodKumar,只是學習它。 :) – manurajhada

0

雖然,回答您的問題已經太晚了,但它可能會幫助其他人。首先我們將討論Hadoop 1的角色。X守護進程,然後你的問題..

1.什麼是次要名稱角色節點 它不完全是一個備份節點。它會定期讀取編輯日誌併爲名稱節點創建更新的fsimage文件。它會定期從名稱節點獲取元數據,並在名稱節點發生故障時使用它。 2.名稱節點的作用是什麼 它是所有守護進程的管理者。它的主jvm程序運行在主節點上。它與數據節點進行交互。

3.作業跟蹤器的作用是什麼 它接受作業並分配給任務跟蹤器以便在數據節點處理。它被稱爲映射過程

4.什麼是任務服務器 將執行規定的處理上,在數據節點現有數據計劃的作用。該過程稱爲地圖。 Hadoop的1.X的

限制

  1. 失敗 的單點,這是名稱節點,所以我們可以保持名稱節點高質量的硬件。如果名字節點發生故障時一切都將無法訪問

解決方案 解決單點故障是Hadoop的2.X,提供高可用性。

high availability with hadoop 2.X

現在你的話題....

我們怎樣才能恢復整個集羣的數據,如果有什麼事情發生? 如果羣集發生故障,我們可以重新啓動它..

如果一個節點工作完成之前失敗了,所以作業作業服務器之前,是工作或繼續在空閒節點從第一重啓? 我們有數據的默認3個副本(我的意思是塊),以獲得高可用性,它取決於管理員,他有多少副本設置......所以工作縴夫將繼續與其他數據節點上的數據的其他副本

我們可以在Mapreduce中使用C程序(例如,mapreduce中的Bubble排序)嗎? 基本上mapreduce是執行引擎,它將解決或處理(存儲加處理)分佈式方式中的大數據問題。我們正在使用mapreduce編程進行文件處理和所有其他基本操作,因此我們可以根據需要使用任何語言來處理文件。

Hadoop的1.X架構 hadoop 1.x has 4 basic daemons

我只是給一個嘗試。希望它能幫助你和其他人一樣。

建議/改進是值得歡迎的。

相關問題