HDFS的寫操作策略

2021-08-24 18:25:47 字數 1276 閱讀 1834

量了一下4個

datanode

時候hdfs

寫操作時每個

node

分配block

的情況,每個

datanode是4

張disk

,寫了個指令碼處理

log後發現平均每個

node

分配的block

數量佔寫的

block

總數量的

25%,而每個

node

上的每個

disk

又分到了

25%的

block

數目。因此,

hdfs

的寫分配演算法相對在我這個

cluster

上還是均勻的。

具體看了一下

code

,選datanode

的演算法是

choosetarget

,這個是大家熟知的了,比如

replication是3

的情況,就是選乙個

local

,然後同乙個

rack

的另外乙個

node

,然後是另外乙個

rack

的乙個node

,這些選擇是隨機的了。 選

disk

(或者說選

block file

的目錄),則是

round-robin

的了。

因此有個疑問就是現在這種演算法對現在這樣每個

node

的每個disk的io

能力是一樣的效果會比較好,那如果不一樣呢,比如一些

node

的某些disk用sd

,相對io

處理會快,那麼理想中就應該給該

node

或者該sd

分配較多的

block

寫操作,現在的演算法就太一視同仁了,能力強的得不到利用,能力差的分配到一樣多的任務。

但不可否認,現在的演算法是最簡潔的,

****** is beauty

。如果要

namenode

選擇datanode

的時候知曉備選的

datanode

上當前寫任務是否繁重的情況也比較難吧。

當然,也會有人說,如果某

datanode

能力強,按照你理想中的應該分配較多的寫,那麼這個

device

不就很快歇菜了……我也沒辦法,只能說更看重什麼吧。

hdfs的讀寫策略

讀資料過程 1.客戶端呼叫filesystem 例項的open 方法,獲得這個檔案對應的輸入流inputstream 2.訪問namenode,獲取檔案對應資料塊的儲存位置,包括副本位置。3.獲得輸入流之後,客戶端便呼叫read 方法讀取資料。選擇最近的datanode進行連線並讀取資料。4.如果客...

HDFS的寫的流程

1 客戶端通過 distributed filesystem 模組向namenode請求上傳檔案,namenode檢查目標檔案是否已存在,父目錄是否存在。2 namenode返回是否可以上傳。3 客戶端請求第乙個 block 上傳到哪幾個 datanode 伺服器上。4 namenode返回3個 d...

HDFS的機架感知策略

機架感知是一種計算不同計算節點 tt 的距離的技術,用以在任務排程過程中儘量減少網路頻寬資源的消耗,這裡用盡量,想表達的是當乙個tt申請不到本地化任務時,jt會盡量排程乙個機架的任務給他,因為不同機架的網路頻寬資源比同乙個機架的網路頻寬資源更可貴。當然,機架感知不僅僅用在mr中,同樣還用在hdfs資...