DataNode工作和服務原理


DataNode查看他的屬性,可以分成以下幾個方面:

1.offerService()方法,此方法在DataNode主循環中執行,做的事情包括和NameNode心跳交互;通知NameNode一段時間以來收到的block;本機block的報告

2.DataXceiverServer,主要處理block的讀寫

3.BlockScanner,對本機block的掃描和校驗處理

4.FSDataset,本機block存儲的入口

5.ipcServer,主要是DataNode和DataNode之間recover block時使用。

這里主要說明第1點,其它幾點在另外一文中已經介紹過,offerService的主要流程見下圖:

offerService是在一個while循環里面被執行,只要DataNode存活,就一直被執行,工作流程如下:


1.如果距離上一次heartbeat時間超過了指定的時間,調用namenode.sendHeartbeat方法,namenode是ipc的框架下的一個proxy,可以認為就是遠程的NameNode,該方法向NameNode匯報DataNode還存活,以及匯報DataNode的利用率,NameNode會返回一系列關於本DataNode的BlockCommand


2.DataNode處理返回的BlockCommand,BlockCommand有DNA_TRANSFER(發送block去指定的DataNode),DNA_INVALIDATE(刪除指定的本機上面的block),DNA_SHUTDOWN(DataNode停止工作),DNA_REGISTER(DataNode向NameNode注冊),DNA_FINALIZE(DataNode完成升級流程),DNA_RECOVERBLOCK(recover block)等

 

3.報告自從上一次心跳以來DataNode收到的block信息,調用namenode.blockReceived方法

 

4.如果距離上一次block report時間超過了指定的時間,調用namenode.blockReport方法,NameNode會返回一系列的DatanodeCommand,接下來的處理就和第2點一樣了

5.根據其他條件,適當的做一些處理,主要是為了考慮資源利用等等

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM