您好,登錄后才能下訂單哦!
這篇文章主要介紹Hadoop-0.20.0源代碼中關鍵的類有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Hadoop-0.20.0源代碼分析
Hadoop框架是兩個模型實現的有機整合,亦即Hadoop分布式文件系統(HDFS)與MapReduce并行編程模型,也就是說,Hadoop框架要能夠提供的基本功能就是,在存儲系統HDFS上進行MapReduce并行計算,所以,如果想要了解Hadoop框架的工作原理和運行機制,主要從這兩個方面著手。
其實,Hadoop中MapReduce并行計算應該是在HDFS實現的,因此了解計算所基于HDFS應該是入口點,當對HDFS有了一定的了解,就能夠知道這樣一個并行計算平臺能夠提供哪些進行計算的基礎要素。
當然,在了解HDFS之前,應該先熟悉一下Hadoop對文件系統FS是如何實現的,都提供了哪些操作。在org.apache.hadoop.fs包中,提供了文件系統的高層抽象(FileSystem類),基于該抽象的文件系統,可以來實現滿足實際需要的文件系統實現類,例如用來在本地存儲原生文件的文件系統(RawLocalFileSystem),例如一個文件系統之上可以存在其它一些類型的文件系統(基于校驗和的文件系統ChecksumFileSystem類就是這樣的,ChecksumFileSystemextendsFilterFileSystem,FilterFileSystem是一個最基本的文件系統實現)。
我在閱讀源代碼的過程中,首先從與org.apache.hadoop.fs包中文件系統相關的其它包org.apache.hadoop.security開始。
org.apache.hadoop.security包中的一些類涉及到文件系統中用戶的信息,例如用戶權限等等。所以,為了能夠深入了解文件系統和方便閱讀源代碼,就應該了解與文件系統相關的安全支持,實際上也就是位于Hadoop源代碼中org.apache.hadoop.security包中實現。
下面分別對其中關鍵類的源代碼進行閱讀分析:
Group類與User類
首先,org.apache.hadoop.security.Group類與org.apache.hadoop.security.User類都是一個實體類,表征一個屬于HDFS文件系統中存在的一類實體,它們的定義非常相似,下面只拿出Group類來說明。
Group類表示一個組的概念實現,它實現了java.security.Principal接口,也就是說Group類表示一個用來容納一些對象的實體,比如一個組中可以包含多個不同的用戶,一個組中可以包含多種不同的權限,一個組中還可以包含多種授權的證書,等等。這個類比較容易,包含一個final修飾的組名稱的字段,也就是說一個組一旦創建就不能修改組名稱,Group類沒有提供修改組名稱的方法。新創建一個組的時候,需要指定組名稱。該類中比較重要的是equals方法,用來比較某個Object對象(組對象)是夠與該組(this)相互匹配。
UserGroupInformation抽象類
再來看一下Hadoop-0.20.0源代碼中UserGroupInformation抽象類。Hadoop框架中,分布式文件系統框架HDFS具有一個用來存儲用戶和組信息的實現,它是通過一個位于org.apache.hadoop.security包中的UserGroupInformation抽象類來抽象這些信息的,如果對于特定的基于用戶和組的操作系統,都可以繼承自該抽象類,用來實現表示用戶與組的一些信息的實體,及其一些簡單的操作。
UserGroupInformation類實現了org.apache.hadoop.io.Writable接口,該接口是Hadoop框架基于DataInput和DataOutput定義的一個序列化協議,實現該接口的類支持序列化操作。
總結一下,UserGroupInformation抽象類主要定義的操作如下:
1、獲取當前用戶線程的用和組信息(UGI),通過getCurrentUGI()方法實現的;
2、獲取用戶名和組名,分別通過抽象方法getUserName()和getGroupNames()方法實現的;
3、根據Hadoop的配置類Configuration實例,登錄系統后返回一個UserGroupInformation類的實例,通過方法login(Configurationconf)實現的;
4、讀取Hadoop的配置類Configuration實例,返回一個UserGroupInformation類的實例,通過方法readFrom(Configurationconf)實現的。
以上是“Hadoop-0.20.0源代碼中關鍵的類有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。