Hadoop原始碼分類概要整理
最近突然覺得, 很多掌握的都還是很淺的原理,需要更深入細粒度去了解整個分散式系統的運轉機制。於是。。開始作死而又作死而又作死的原始碼之旅。
Hadoop包的功能總共有下列幾類:
tool:提供一些命令列工具,如DistCp,archive
mapreduce,:Hadoop的Map/Reduce實現
filecache:提供HDFS檔案的本地快取,用於加快Map/Reduce的資料訪問速度
fs:檔案系統的抽象,可以理解為支援多種檔案系統實現的統一檔案訪問介面
hdfs:HDFS,Hadoop的分散式檔案系統實現
ipc:一個簡單的IPC的實現,依賴於IO提供的編解碼功能
io:表示層,將各種資料編碼/解碼,方便在網路上的傳輸
net:封裝部分網路功能,如DNS,socket
security:使用者和使用者組資訊
conf:系統的配置引數
metrics:系統攻擊資料的收集,用於網管範疇
util:工具類
record:根據DDL自動生成他們的編碼函式,目前可以提供C++和java
http:基於Jetty的HTTP Servlet,使用者通過瀏覽器可以觀察檔案系統的一些狀態資訊和日誌
log:提供HTTP訪問日誌的HTTP Servlet
一、RPC
它是一種通過網路從遠端計算機程式上請求服務,而不需要了解底層網路技術的協議。RPC協議假定某些傳輸協議的存在,如TCP或UDP,為通訊程式之間攜帶資訊資料。
RPC採用客戶機/伺服器模式,請求程式就是一個客戶機,而服務提供程式就是一個伺服器。例如HDFS的通訊就包括:
1、Client-NameNode之間,其中NameNode是伺服器。
2、Client-DataNode之間,其中DataNode是伺服器。
3、DataNode-NameNode之間,其中NameNode是伺服器。
4、DataNode-DataNode之間,其中某一個DataNode是伺服器,另一個是客戶端。
org.apache.hadoop.rpc中包含Client類和Server類。Server類是一個抽象類,類RPC封裝了Server,利用反射,把某個物件的方法開放出來,變成RPC中的伺服器。
二、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)
三、MapReduce
相關包:org.apache.hadoop.mapreduce.JobContext、org.apache.hadoop.mapreduce、org.apache.hadoop.mapreduce.lib.*(包含inputFomat等..)
這些還是很小的一部分,但是一點一點深入好了~
相關文章
- hadoop概要Hadoop
- hadoop中的TextInputFormat類原始碼分析HadoopORM原始碼
- Runtime原始碼 Category(分類)原始碼Go
- Hadoop原始碼篇--Client原始碼Hadoop原始碼client
- HashMap原始碼整理HashMap原始碼
- hadoop原始碼分析Hadoop原始碼
- 超詳細的 Bert 文字分類原始碼解讀 | 附原始碼文字分類原始碼
- 許可權系統概要(收集,整理)
- Hadoop原理與原始碼Hadoop原始碼
- Hadoop節點的分類與作用Hadoop
- 最新安卓例子分類原始碼打包下載安卓原始碼
- 一比一還原axios原始碼(零)—— 概要iOS原始碼
- k8s client-go原始碼分析 informer原始碼分析(1)-概要分析K8SclientGo原始碼ORM
- 音樂檔案一鍵整理分類指令碼(按照歌手-專輯進行分類)--基於python指令碼Python
- Masonry 原始碼學習整理原始碼
- 鴻蒙原始碼目錄整理鴻蒙原始碼
- Hadoop原始碼篇--Reduce篇Hadoop原始碼
- JavaScript實現垃圾分類小遊戲教程,附原始碼!JavaScript遊戲原始碼
- 使用Bert預訓練模型文字分類(內附原始碼)模型文字分類原始碼
- YYKit原始碼探究(五十四) —— NSDate分類之Date modify(二)原始碼
- Hadoop學習——Client原始碼分析Hadoopclient原始碼
- Hadoop原始碼分析(完整版)Hadoop原始碼
- Android原始碼編譯--整理Android原始碼編譯
- iScroll下拉重新整理 原始碼原始碼
- Hadoop原始碼篇---解讀Mapprer原始碼Input輸入Hadoop原始碼APP
- Hadoop原始碼篇---解讀Mapprer原始碼outPut輸出Hadoop原始碼APP
- 網路安全學習中,原始碼審計有哪些分類?原始碼
- 直播商城原始碼,實現左右聯動商品分類頁面原始碼
- CMultiFTP類原始碼 (轉)FTP原始碼
- Java集合類原始碼Java原始碼
- NOI國家集訓隊論文分類整理
- Oracle內建SQL函式-分類整理大全(轉)OracleSQL函式
- Hadoop2原始碼分析-Hadoop V2初識Hadoop原始碼
- Hadoop單步debug追原始碼Hadoop原始碼
- hadoop原始碼解讀——ConfiguredHadoop原始碼
- Hadoop2原始碼分析-MapReduce篇Hadoop原始碼
- Hadoop 學習之-原始碼繫結Hadoop原始碼
- 如何高效的閱讀hadoop原始碼?Hadoop原始碼