2012-06-13 24 views
3

看看Facebook使用的AvatarNode解決方案爲HDFS Namenode提供高可用性,我不明白使用NFS的原因。我感到困惑的是NFS爲了實現HA而必須複製。主要必須寫入NFS並刷新才能擁有HA。爲什麼不簡單地打開主要和輔助之間的套接字通道,並對輔助Namenode執行相同的寫入。這將是(近似)相同數量的網絡流量,並且似乎具有相同的複製語義。HDFS Namenode HA:爲什麼使用NFS而不是簡單地在兩者之間進行復制?

所以問題是,爲什麼不這樣做?

我想一個原因可能是NFS存在,所以這個問題可能會更容易實現。但是,考慮到在主要和次要之間使用原始套接字通道的(明顯的)簡單性,將寫入到流接口(即文件)的相同信息寫入NFS,我還是抓住了我的頭,完成了。

當然,選擇使用我在扶手椅分析中缺少的NFS一定有一些很好的理由。

回答

1

有趣的問題。我在AvatarNodes上發現了這篇文章:http://hadoopblog.blogspot.com/2010/02/hadoop-namenode-high-availability.html

在我看來,AvatarNode允許您最大限度地減少名稱節點停機時的停機時間,並在不到一分鐘的時間內用新的名稱節點進行備份。

從hadoop的documentation

The term "secondary name-node" is somewhat misleading. It is not a name-node in the 
sense that data-nodes cannot connect to the secondary name-node, and in no event it can 
replace the primary name-node in case of its failure. 

由於次級名稱節點不能作爲名稱節點行動,它帶來了冗長的停工時間的恢復或啓動一個新的名稱節點的可能性。

AvatarNode既可以充當輔助節點,也可以充當主節點,只需切換VIP即可實現快速故障切換。

在關於爲什麼使用NFS而不是插座,後說

It is guaranteed that the Standby AvatarNode ingests all committed transactions because  
it reopens the edits log and consumes all transactions till the end of the file; this 
guarantee depends on the fact that NFS-v3 supports close-to-open cache coherency 
semantics. 

我認爲這是當名節點出現故障儘量減少數據丟失,並保持一致性與HDFS數據進行編輯的問題。更多關於這裏接近開放的一致性保證:http://nfs.sourceforge.net/#faq_a8

+0

感謝。我確實瞭解Avatarnode設計正在做什麼以及它試圖解決的問題。我在質疑的是使用NFS的實現。似乎直接複製小學和中學之間的信息應該相當簡單,而不是在混合中增加另一個失敗系統。 – Hellblazer

+0

感謝您的補充。但是,似乎使用簡單的套接字來複制它們之間的狀態,在主要和次要之間保持接近開放的語義看起來微不足道。 – Hellblazer

2

我不知道,但我同意,這似乎是一個非常奇怪的選擇,我真的不能想到任何其他原因,但團隊任務是修復某些功能正常的NFS設置,這些設置可用於其他用途。但根據我的經驗,我認爲NFS還有另一個單點失敗,並不會在這種情況下選擇它。

0

哈爾,this可能會回答你的問題(特別是在「踢可以在路上」位)..

相關問題