hadoop中NameNode、DataNode和Client三者之間協作關係及通訊方式介紹

jiaaq2008發表於2014-04-03

 



1)NameNode、DataNode和Client
         NameNode可以看作是分散式檔案系統中的管理者,主要負責管理檔案系統的名稱空間、叢集配置資訊和儲存塊的複製等。NameNode會將檔案系統的Meta-data儲存在記憶體中,這些資訊主要包括了檔案資訊、每一個檔案對應的檔案塊的資訊和每一個檔案塊在DataNode的資訊等。
DataNode是檔案儲存的基本單元,它將Block儲存在本地檔案系統中,儲存了Block的Meta-data,同時週期性地將所有存在的Block資訊傳送給NameNode。
Client就是需要獲取分散式檔案系統檔案的應用程式。



2)檔案寫入
    Client向NameNode發起檔案寫入的請求。
    NameNode根據檔案大小和檔案塊配置情況,返回給Client它所管理部分DataNode的資訊。
    Client將檔案劃分為多個Block,根據DataNode的地址資訊,按順序寫入到每一個DataNode塊中。

3)檔案讀取
    Client向NameNode發起檔案讀取的請求。
    NameNode返回檔案儲存的DataNode的資訊。
    Client讀取檔案資訊。

----------------------------------------------------------------------------------------------------------------------------------------------------------------

通訊方式介紹:

在hadoop系統中,master/slaves/client的對應關係是:
master---namenode;
slaves---datanode;
client---dfsclient;
那究竟是通過什麼樣的方式進行通訊的呢,在這裡從大體介紹一下:
簡單地講:
client和namenode之間是通過rpc通訊;
datanode和namenode之間是通過rpc通訊;
client和datanode之間是通過簡單的socket通訊。
隨便拔一下DFSClient的程式碼,可以看到它有一個成員變數public final ClientProtocolnamenode;
而再拔一下DataNode的程式碼,可以看到它也有一個成員變數public DatanodeProtocolnamenode




來自群組: Hadoop技術組

相關文章