1. 程式人生 > >Hadoop筆記三之Hdfs體系架構及各節點之間的Rpc通訊

Hadoop筆記三之Hdfs體系架構及各節點之間的Rpc通訊

前言:

        Rpc協議就是Server實現一個聲明瞭很多方法的介面並對外暴露此介面,Client通過呼叫此介面中宣告的方法向server傳送資訊從而實現了與server的通訊。

介紹:

        Hdfs是分散式部署的,分為nameNode,secondaryNameNode,dataNode,DFSClient四部分,每個節點之間都遵守RPC通訊協議。

一:NameNode與DataNode通訊,DatanodeProtocol

1:NameNode是DFS中的目錄空間管理者,整個hdfs系統中只有一個NameNode節點,NameNode中存放了兩張表

      第一張表存放檔名與資料塊序列的對應關係,就是namenode節點中的fsimage檔案。    

      第二張表存放的是資料塊與machinelist的對應關係,此表是在程式執行時載入入記憶體中的。

2:NameNode實現了三個介面。

      org.apache.hadoop.hdfs.protocol.ClientProtocol

      org.apache.hadoop.hdfs.server.protocol.DatanodeProtocol

      org.apache.hadoop.hdfs.server.protocol.NamenodeProtocol 

3:DataNode用來存放資料塊,可以有一個至多個DataNode。DataNode中存放一張資料塊於位元組流對應關係的表,終其一生他會不斷的詢問NameNode有什麼任務需要完成,而NameMode不能直接聯絡DataNode他只能給DataNode返回一個簡單的值。

4:DatanodeProtocol

      NameNode實現了DatanodeProtocol ,而DataNode通過呼叫此介面與NameNode建立並保持通訊,將自己的塊資訊和負載資訊上傳給NameNode。

      DatanodeProtocol中聲明瞭registerDatanode方法和sendHeartbeat方法。

      叢集啟動時DataNode會呼叫registerDatanode方法將自己的資訊註冊到NameNode上。

      DataNode還會不斷重複週期性的呼叫sendHeartbeat方法將自己的註冊資訊,磁碟資訊,快取等節點的狀態資訊傳送給NameNode。

      注:我們Hadoop上通過配置檔案告訴DataNode與自己對應的NameNode的位置。

   總結:

       NameNode相當於server它實現了介面DatanodeProtocol,而DataNode相當於client它通過呼叫DatanodeProtocol來訪問NameNode。

二:DFSClient與NameNode通訊,ClientProtocol

1:DFSClient

       DFSClient可以連線hdfs檔案系統並執行一些基本的檔案任務,它使用ClientProtocol與NameNode建立通訊另外它也可以直接連線DataNode並讀取或更改上面的資料塊。 我們在程式中使用不能直接使用DFSClient物件,我們通過FileSystem物件來使用DFSClient物件(org.apache.hadoop.fs.FileSystem)。

2: ClientProtocol

      NameNode實現了ClientProtocol, ClientProtocol中提供了很多操作hdfs資料的方法,通過FileSystem物件來呼叫DFSClinet物件並呼叫ClientProtocol宣告的方法從而訪問NameNode。

  總結:

      NameNode相當於server它實現了介面ClientProtocol,而DFSClient相當於client它通過呼叫ClientProtocol來訪問NameNode。

三:NameNode與secondaryNameNode通訊,NamenodeProtocol

1:secondaryNameNode是NameNode的助手,他獲取edits檔案來獲取NameNode的狀態,將edits和fsimage檔案合併。他們二者通過NamenodeProtocol通訊。

四:其他節點通訊

1:DataNode之間的通訊使用InterDatanodeProtocol協議通訊

2:DFSClient與DataNode之間通訊使用ClientDatanodeProtocol協議通訊

五:RPC Server

在NameNode中有個main方法,通過此方法建立RPC Server從而啟動服務程序。

六:圖