Hadoop HDFS源碼學習筆記(七)--DFSInputStream -- openInfo

現詳細瞭解openInfo函數的內部實現,以及修改了什麼

首先給出openInfo的調用序列圖:


在openInfo函數中,首先會調用DFSClient的callGetBlockLocations,這個函數主要是通過跟namenode的交互,來完成從namenode取得用戶請求的file的元數據信息,返回的內容爲locatedBlocks

接下來會讓DFSInputStream更新當前的locatedBlocks的信息,並且更新lastBlockBeingWrittenLength這個變量記錄了當前讀取file如果是underconstruction狀態的話最後一個block正在寫的字節長度

接下來會判斷最後一個block是否處於complete狀態,如果不是,則會根據元數據提供的block的pipeline來到datanode上獲得block的寫入長度,並賦值給lastBlockBeingWrittenLength

最後要對當前的currentNode賦值爲null,因爲currentNode記錄的是當前操作的block的當前連接的datanode的info

下面看一下相關的類圖:



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