Hadoop源碼分類概要整理

  最近忽然以爲, 不少掌握的都仍是很淺的原理,須要更深刻細粒度去了解整個分佈式系統的運起色制。因而。。開始做死而又做死而又做死的源碼之旅。java

  Hadoop包的功能總共有下列幾類:node

  tool:提供一些命令行工具,如DistCp,archiveapache

  mapreduce,:Hadoop的Map/Reduce實現瀏覽器

  filecache:提供HDFS文件的本地緩存,用於加快Map/Reduce的數據訪問速度緩存

  fs:文件系統的抽象,能夠理解爲支持多種文件系統實現的統一文件訪問接口服務器

  hdfs:HDFS,Hadoop的分佈式文件系統實現網絡

  ipc:一個簡單的IPC的實現,依賴於IO提供的編解碼功能socket

  io:表示層,將各類數據編碼/解碼,方便在網絡上的傳輸分佈式

  net:封裝部分網絡功能,如DNS,socket函數

  security:用戶和用戶組信息

  conf:系統的配置參數

  metrics:系統攻擊數據的收集,用於網管範疇

  util:工具類

  record:根據DDL自動生成他們的編碼函數,目前能夠提供C++和java

  http:基於Jetty的HTTP Servlet,用戶經過瀏覽器能夠觀察文件系統的一些狀態信息和日誌

  log:提供HTTP訪問日誌的HTTP Servlet

 

1、RPC

  它是一種經過網絡從遠程計算機程序上請求服務,而不須要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,爲通訊程序之間攜帶信息數據。

    RPC採用客戶機/服務器模式,請求程序就是一個客戶機,而服務提供程序就是一個服務器。例如HDFS的通訊就包括:

  一、Client-NameNode之間,其中NameNode是服務器。

  二、Client-DataNode之間,其中DataNode是服務器。

  三、DataNode-NameNode之間,其中NameNode是服務器。

  四、DataNode-DataNode之間,其中某一個DataNode是服務器,另外一個是客戶端。

  org.apache.hadoop.rpc中包含Client類和Server類。Server類是一個抽象類,類RPC封裝了Server,利用反射,把某個對象的方法開放出來,變成RPC中的服務器。

 

2、DataNode與NameNode

  一個HDFS集羣可能包含上千DataNode節點,這些DataNode定時與NameNode通訊,爲了減輕NameNode的負擔,NameNode上並不永久保存DataNode上那些數據塊信息,而是經過DataNode啓動時上報,來更新NameNode上的映射表。

        相關包:org.apache.hadoop.hdfs.server.common、org.apache.hadoop.hdfs.server.datanode...

  全部和數據塊相關的操做,都在FSDataset相關的類中進行處理,一個DataNode上能夠指定多個Storage來存儲數據塊,因爲HDFS規定了一個目錄能存放Block的數目,因此一個storage上存在多個目錄。對應的,FSDataset中用FSVolume來對應一個Storage,FSDir對應一個目錄,全部的FSVolume由FSVolumeSet管理,FSDataset中經過一個FSVolumeSet對象,就能夠管理它的全部存儲空間。

       相關包:org.apache.hadoop.hdfs.server.dataNode.fsDataSet

  NameNode做爲系統文件目錄的管理者,DataNode關注的是數據塊,NameNode保存的主要信息是文件名-數據塊,數據塊-DataNode列表。 DataNode實現了InterDatanodeProtocol和ClientDatanodeProtocol,剩下的,由NameNode實現。

  相關包:org.apache.hadoop.hdfs.server.protocol、org.apache.hadoop.hdfs.protocol、org.apache.hadoop.hdfs.server.namenode   (重點FSNamesystem.java)

 

3、MapReduce

     相關包:org.apache.hadoop.mapreduce.JobContext、org.apache.hadoop.mapreduce、org.apache.hadoop.mapreduce.lib.*(包含inputFomat等..)

  這些仍是很小的一部分,可是一點一點深刻好了~

相關文章
相關標籤/搜索