Hadoop-0.20.0源代碼中關(guān)鍵的類
本節(jié)和大家一起學(xué)習(xí)一下有關(guān)Hadoop-0.20.0源代碼方面的內(nèi)容,主要介紹幾個Hadoop中常用的類,相信通過本節(jié)的學(xué)習(xí)大家對Hadoop-0.20.0源代碼有一定的了解,讓我們一起來學(xué)習(xí)吧。
Hadoop-0.20.0源代碼分析
Hadoop框架是兩個模型實現(xiàn)的有機整合,亦即Hadoop分布式文件系統(tǒng)(HDFS)與MapReduce并行編程模型,也就是說,Hadoop框架要能夠提供的基本功能就是,在存儲系統(tǒng)HDFS上進行MapReduce并行計算,所以,如果想要了解Hadoop框架的工作原理和運行機制,主要從這兩個方面著手。
其實,Hadoop中MapReduce并行計算應(yīng)該是在HDFS實現(xiàn)的,因此了解計算所基于HDFS應(yīng)該是入口點,當(dāng)對HDFS有了一定的了解,就能夠知道這樣一個并行計算平臺能夠提供哪些進行計算的基礎(chǔ)要素。
當(dāng)然,在了解HDFS之前,應(yīng)該先熟悉一下Hadoop對文件系統(tǒng)FS是如何實現(xiàn)的,都提供了哪些操作。在org.apache.hadoop.fs包中,提供了文件系統(tǒng)的高層抽象(FileSystem類),基于該抽象的文件系統(tǒng),可以來實現(xiàn)滿足實際需要的文件系統(tǒng)實現(xiàn)類,例如用來在本地存儲原生文件的文件系統(tǒng)(RawLocalFileSystem),例如一個文件系統(tǒng)之上可以存在其它一些類型的文件系統(tǒng)(基于校驗和的文件系統(tǒng)ChecksumFileSystem類就是這樣的,ChecksumFileSystemextendsFilterFileSystem,F(xiàn)ilterFileSystem是一個最基本的文件系統(tǒng)實現(xiàn))。
我在閱讀源代碼的過程中,首先從與org.apache.hadoop.fs包中文件系統(tǒng)相關(guān)的其它包org.apache.hadoop.security開始。
org.apache.hadoop.security包中的一些類涉及到文件系統(tǒng)中用戶的信息,例如用戶權(quán)限等等。所以,為了能夠深入了解文件系統(tǒng)和方便閱讀源代碼,就應(yīng)該了解與文件系統(tǒng)相關(guān)的安全支持,實際上也就是位于Hadoop源代碼中org.apache.hadoop.security包中實現(xiàn)。
下面分別對其中關(guān)鍵類的源代碼進行閱讀分析:
Group類與User類
首先,org.apache.hadoop.security.Group類與org.apache.hadoop.security.User類都是一個實體類,表征一個屬于HDFS文件系統(tǒng)中存在的一類實體,它們的定義非常相似,下面只拿出Group類來說明。
Group類表示一個組的概念實現(xiàn),它實現(xiàn)了java.security.Principal接口,也就是說Group類表示一個用來容納一些對象的實體,比如一個組中可以包含多個不同的用戶,一個組中可以包含多種不同的權(quán)限,一個組中還可以包含多種授權(quán)的證書,等等。這個類比較容易,包含一個final修飾的組名稱的字段,也就是說一個組一旦創(chuàng)建就不能修改組名稱,Group類沒有提供修改組名稱的方法。新創(chuàng)建一個組的時候,需要指定組名稱。該類中比較重要的是equals方法,用來比較某個Object對象(組對象)是夠與該組(this)相互匹配。
UserGroupInformation抽象類
再來看一下Hadoop-0.20.0源代碼中UserGroupInformation抽象類。Hadoop框架中,分布式文件系統(tǒng)框架HDFS具有一個用來存儲用戶和組信息的實現(xiàn),它是通過一個位于org.apache.hadoop.security包中的UserGroupInformation抽象類來抽象這些信息的,如果對于特定的基于用戶和組的操作系統(tǒng),都可以繼承自該抽象類,用來實現(xiàn)表示用戶與組的一些信息的實體,及其一些簡單的操作。
UserGroupInformation類實現(xiàn)了org.apache.hadoop.io.Writable接口,該接口是Hadoop框架基于DataInput和DataOutput定義的一個序列化協(xié)議,實現(xiàn)該接口的類支持序列化操作。
總結(jié)一下,UserGroupInformation抽象類主要定義的操作如下:
1、獲取當(dāng)前用戶線程的用和組信息(UGI),通過getCurrentUGI()方法實現(xiàn)的;
2、獲取用戶名和組名,分別通過抽象方法getUserName()和getGroupNames()方法實現(xiàn)的;
3、根據(jù)Hadoop的配置類Configuration實例,登錄系統(tǒng)后返回一個UserGroupInformation類的實例,通過方法login(Configurationconf)實現(xiàn)的;
4、讀取Hadoop的配置類Configuration實例,返回一個UserGroupInformation類的實例,通過方法readFrom(Configurationconf)實現(xiàn)的。本節(jié)關(guān)于Hadoop-0.20.0源代碼方面的知識介紹到這里。
【編輯推薦】
- Hadoop分布式文件系統(tǒng)詳解
- Hadoop0.20.2集群配置入門指導(dǎo)手冊
- Hadoop文件系統(tǒng)如何快速安裝?
- Hadoop集群搭建過程中相關(guān)環(huán)境配置詳解
- Hadoop完全分布模式安裝實現(xiàn)詳解