2016-10-04 36 views
1

我想了解hbase如何使用hdfs。
所以這裏是我的理解(請糾正我,如果我錯了):
我知道hbase使用hdfs來存儲數據和數據被分割成區域,並且每個區域服務器我服務於很多地區,所以我猜測一個區域(專有)可能與許多數據節點通信以獲取和放置數據,所以如果這是正確的,那麼如果該區域服務器失敗,那麼存儲在這些數據節點中的數據將不再可用
預先感謝您: )瞭解hbase如何使用hdfs

回答

1

通常,Regionserver在數據節點上運行。

由於HDFS的工作原理,Regionserver將在可能的情況下執行對本地數據節點的讀寫操作,然後HDFS將確保將數據複製到其他兩個隨機數據節點上。因此,在任何時候,由該區域服務器寫入的數據都存儲在HDFS中的3個節點上。

雖然區域服務器正在爲區域提供服務,但只有它將讀取/寫入該區域的數據,但如果區域服務器進程崩潰,HBase主服務器將選擇另一個區域服務器來爲該區域提供服務。數據將在幾分鐘內無法使用,但HBase會很快恢復。

如果整個主機發生故障,那麼由於HDFS確保將數據寫入其他兩個節點,所以情況相同 - 主站將選擇一個新的區域服務器來打開故障區域並且數據不會丟失。

+0

和三個數據節點(用於複製),區域服務器只通信(或使用)一個數據節點 – aName

+0

對於讀取,通常是。對於寫入操作,寫入操作將獲得1個DN,然後由HDFS複製到其他部分。如果某個區域發生故障並在新主機上啓動,則主機很可能沒有本地所需的數據,因此Regionserver將與羣集中的其他節點通信以讀取數據。因此,在這種情況下,它可以與羣集中的任何其他datanode進行通信 –

+0

非常感謝您 – aName