BPServiceActor詳解
簡(jiǎn)介 BPServiceActor 主要在DataNode中用于和NameNode溝通的類(lèi)。主要功能如下: 與 namenode 進(jìn)行預注冊握手。 向 namenode 注冊。 定期向 namenode 發(fā)送心跳。 處理從 namenode 收到的命令。 核心功能 BPServiceActor的入口函數為start函數,當前類(lèi)本身為runnable接口的實(shí)現類(lèi),所以在start函數里面新建了BPServiceActor線(xiàn)程,并且將其啟動(dòng), 所以其真實(shí)的啟動(dòng)函數為run() 在run函數里面主要做了連接NameNode并且注冊當前DataNode的事。 與NameNode握手 首先要做的就是和NameNode建立連接,核心代碼如下: bpNamenode = dn.connectToNN(nnAddr); 建立連接之后需要做的就是獲取獲取版本信息并且檢查版本信息,如果單次獲取失敗會(huì )進(jìn)行重試。失敗之后每次的重試間隔為5s。 NamespaceInfo nsInfo = retrieveNamespaceInfo(); bpos.verifyAndSetNamespaceInfo(th....