常言道:男人是視覺動物。我覺得不完全對,我的理解是范圍再擴大點,不管男人女人都是視覺動物。某些場合(比如面試、初次見面等),別人沒有那么多的閑暇時間聽你訴說過往以塑立一個關於你的完整模型。所以,第一眼,先走外貌協會的路線,打量一番,再通過望聞問切等各種手段獲取關於你的大量信息(如談吐、舉止等),以快速建立起對於你的認識。
待人接物如此,搞技術也不例外,起碼我是這樣的。把玩了一番Hadoop的MapReduce過程,單詞計數、去重、單表關聯等運行的時候控制台打印出各種我看懂看不懂的信息,有了這些視覺呈現足以激發我的興趣,激勵並指引我慢慢走向其內部構造、運行機制。通過上篇的過渡也對於整個MapReduce的運行過程有了一個粗略的認識,下一步就是慢慢深入其源碼,一窺hadoop究竟。
今天主要介紹有關Hadoop(0.20.2)的源碼目錄結構、各文件夾的職責以及源碼中的包結構以及核心包對應的功能。
一.Hadoop的目錄結構及職責
1.目錄結構
2.各文件夾主要職責
bin: 此目錄下為進行hadoop配置、運行以及管理的shell命令集合
c++:此目錄下為linux下amd64-64位系統以及i386-32位系統提供的庫文件集合
conf:此目錄下為運行與配置hadoop環境需要的配置文件以及示例文件集合,實際運行時可以對照此目錄下的文件結構進行相應的配置
contrib:此目錄下針對hadoop運行過程中需要特殊強化的模塊進行了模塊化封裝,此為其發布包以及相應的配置文件
docs:此目錄下包含對於hadoop運行配置的基本文檔,包括html和pdf兩種格式
ivy:此目錄下包含編譯hadoop的ivy編譯工具的腳本和配置文件
lib:此目錄下包含編譯以及運行hadoop環境必須的其他模塊jar包集合
src:hadoop源碼
webapps:發布包中的示例程序
build.xml:編譯工程所需的ant配置文件
CHANGES.txt:新版本針對上一版本的更新點
二、源碼包結構及功能
1.源碼包結構
前提:需要將下載好的hadoop源碼導入eclipse中,具體做法可以網上搜。需要將src下的core、tool、mapred以及hdfs四個文件夾拷貝到eclipse的項目中,得到結構圖如下:
src/core:
src/mapred:
src/tools:
src/hdfs:
2.核心包主要功能介紹
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
后面就是咀嚼代碼的歲月了
對於Hadoop等大數據技術有興趣的歡迎加群413471695交流討論^_^
本文鏈接:《Hadoop閱讀筆記(五)——重返Hadoop目錄結構》
參考博文:http://caibinbupt.iteye.com/?page=6
友情贊助
如果你覺得博主的文章對你那么一點小幫助,恰巧你又有想打賞博主的小沖動,那么事不宜遲,趕緊掃一掃,小額地贊助下,攢個奶粉錢,也是讓博主有動力繼續努力,寫出更好的文章^^。
1. 支付寶 2. 微信