hadoop2包結構及包功能大致介紹

一、概述

hadoop2的設計細想比hadoop1進步了很多,畢竟hadoop1是幾年前的東西了。軟件設計的理論在這幾年中發展很快,出現了很多的軟件設計理論 如:領域驅動模型、事件驅動模型、狀生命週期管理等,也出現了很多的開源的解決方案,當然開源的方案很多都是起源apache社區。在hadoop2中,採取了maven的工程管理結構,把以前的單一工程換成了多工程結構模式,現在估計有45個(pom.xml文件的個數)project,以後會不會更多或者合併一些,這個就要持續關注hadoop開源社區的發展了。當然project也不是越多越好,我見過的最多的包工程有幾百個,eclipse刷新的時候就需要幾個小時,這個對於開發效能是一個極大的挑戰。一般的項目的project個數大約在10個左右。hadoop大約有45個,我感覺有點多,當然hadoop2把project合理的分層了,這個確實是非常清晰的。

關於多個project的好處,我認爲主要是:其一project之間的依賴的關係是單向的,包之間的功能是隔離的,這個不同於package,package是可以互相依賴的,對於隔離主要看設計者;其二就是管理方便,開發方便。

二、hadoop2工程分析

我們接下來對release-2.0.0-alpha分析,源碼來自:http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.0.0-alpha,其他的一些版本包會有一些變化。

分析的工具是:structure101,可以google看下。

第一層:hadoop主要有四部分:hadoop-common-project、hadoop-hdfs-project、hadoop-mapreduce、hadoop-tools。他們之間的依賴關係如下圖1所示:

圖1

每部分的功能從名稱就看得出來,這樣的依賴關係很清晰。我們將從低往上去看下依賴關係。 

第二層:圖2展示了第二層的結構。

圖2

我們可以看出四個包的下屬工程,其中hadoop-mapreduce的工程hadoop-yarn有一個向上依賴hadoop-mapreduce-client 依賴是pom.xml的scope爲test的依賴。我認爲這個也是不對的,應該是去掉。 tools工程下面的子工程互相之間是獨立的,因爲他們都是工程包。

第三層:我們再看下其中hadoop-yarn與hadoop-mapreduce-client,如圖3所示:

圖3

我們看到hadoop-yarn還是很清楚的。對於hadoop-mapreduce-client有6個project不過還是比較清楚。

第四層:看下 hadoop-yarn-server下屬的包,建圖4

圖4

在此圖中,我們看到了 hadoop-yarn-server-namemanger及hadoop-yarn-server-resourcemanager,在計算中,也就是這兩大守護進程了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章