2016-09-17 85 views
0

在故障轉移過程中,Hadoop的ZKFC將負責在ANN < - > SNN之間切換。 但是在這個過程中有一個叫做圍欄的步驟來確保關閉ANN。Hadoop高可用性查詢

如果ANN的電源關閉,並且採用了sshfence的默認策略。

「切換不會發生,因爲ssh進入ANN將無法正常工作,從而影響高可用性」

從文檔

「然而,當故障發生時,它仍然是可能的之前的Active NameNode可以向客戶端提供讀取請求,這可能會過時,直到NameNode在嘗試寫入JournalNodes時關閉,因此,即使在使用仲裁日誌管理器時也需要配置一些防護方法。 「

  • 其他分佈式系統如何在不影響高可用性的情況下解決此問題?
  • 如果上述問題已有解決方案,爲什麼hdfs沒有采用它?

回答

0

Hdfs配置允許使用多種防護方法。

從文檔:

「爲了做到這一點,你必須至少配置一個擊劍方法,這些被配置爲一個回車分開的列表,這將嘗試以直到一個指示。擊劍已經成功了。「

重要的是要注意的是,這些方法應該實現某種超時機制或立即返回。最簡單的方法是使用sshfence作爲第二種方法(假設ANN已關閉),並使用超時和shell('/ bin/true')。例如:

<property> 
    <name>dfs.ha.fencing.methods</name> 
    <value>sshfence\nshell(/bin/true)</value> 
</property> 
<property> 
    <name>dfs.ha.fencing.ssh.connect-timeout</name> 
    <value>30000</value> 
</property> 

當然,您可以編寫更復雜的腳本來檢查ANN是否關閉。

+0

根據我的理解,配置多種防護方法並不能解決此問題中描述的問題。 「前面的活動NameNode仍可能向客戶端提供讀取請求」 所有分佈式系統中的隔離概念是共同的還是僅與Hadoop有關?其他人如何處理陳舊讀取的可能性? –

+0

@pavankumarreddy配置多種擊劍方法解決了您提到的另一個問題: 「_Switch over不會發生,因爲ssh進入ANN不會工作,因此會影響高可用性」#: Stale reads will be sshfence itself。它會ssh到namenode並殺死namenode進程。但是,如果您正在尋找更可靠的解決方案,請查看電源防護或其他解決方案[此處](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Cluster_Suite_Overview/) S2-擊劍-概述-CSO.html) –