HDFS塊分配策略


HDFS塊分配策略



                                                                                               塊分配策略流程圖

注:上圖提到的遠程機架與本地機架是相對於找到的第一個副本的目標節點來說。

一個客戶端a機器發起請求分配塊請求,NN接收到請求後,執行如下塊分配流程:

1)   如果a不是一個DataNode,則在集羣範圍內隨機選擇一個節點作爲目標節點,否則執行下面的2,3步驟;

2)  判斷a機器是否符合存儲數據塊的目標節點,如果符合,第一個塊副本分配完畢;

3)如果a機器不符合作爲目標節點,則在於與a機器同機架範圍內尋找,如果找到目標節點,第一個塊副本分配完畢;

4)如果在同一個機架內未找到符合要求的目標節點,則在集羣內隨機查找,找到則第一個塊副本分配完畢,否則未找到符合條件的塊,塊分配失敗;

5)如果已經成功分配第一個塊副本,則與a不同機架的遠程機架內尋找目標節點,如果符合,第二個塊副本分配完畢;

6)如果在遠程機架內未找到符合要求的目標節點,在與a相同的本機架尋找,如果找到則第二個塊副本分配完畢;否則未找到符合條件的塊,第二份塊分配失敗;

7)如果前2個塊副本分配成功,則準備分配第三個副本的目標節點,首先會判斷前兩份是否在同一個機架,如果是,則在遠程機架尋找目標節點,找到則第三份副本分配完畢;如果前兩份在不同機架,則在與a相同機架內尋找,如果找到則第三份副本分配完畢,否則在集羣範圍尋找,找到則第三份分配完畢,否則第三份分配失敗

8)如果塊副本大於三分,則在集羣範圍內隨機尋找節點

 

在上面的塊分配流程圖中,反覆出現滿足條件的節點判斷,要判斷一個節點是否滿足條件,需要經過如下流程,流程圖如下:


當在一個範圍內找到一個節點後,還需要經過如上的條件判斷,才能確定一個DataNode進程是否可以作爲目標節點:

1)  如果沒有節點機器被選擇,則該節點可以作爲備選節點,否則需要判斷下一個DataNode

是否符合要求;(這樣就防止同一個塊副本存儲到同一臺機器)

2)  然後判斷節點是否退役,存儲空間是否足夠,負載是否大於2倍平均負載,本機架選擇的節點是否超過限制,如果均滿足,則該datanode符合要求,否則需要判斷下一個DataNode是否符合要求;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章