摘 要: Hadoop工具核心模塊包括分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)和分布式編程模型MapReduce,其中HDFS是Hadoop數(shù)據(jù)存儲處理的核心模塊,但目前缺乏有效的HDFS可視化管理工具,因此設(shè)計實現(xiàn)了一套可視化管理工具,該工具基于Java Swing組件開發(fā)。以此工具為基礎(chǔ),搭建了一套基于Hadoop的海量遙感數(shù)據(jù)云存儲系統(tǒng)。實驗表明,該系統(tǒng)界面友好,易于部署,可以很好地支持HDFS可視化管理。
關(guān)鍵詞: Hadoop;分布式文件系統(tǒng);可視化管理系統(tǒng)
0 引言
近年來,隨著遙感技術(shù)的發(fā)展,遙感數(shù)據(jù)的類型不斷擴展,遙感數(shù)據(jù)的量級在不斷增加,這給遙感數(shù)據(jù)的管理帶來了新的挑戰(zhàn)。云計算作為大數(shù)據(jù)時代的典型技術(shù)代表,可以有效地進行海量遙感數(shù)據(jù)的處理。Hadoop[1]是目前云計算技術(shù)應(yīng)用最廣泛的一個技術(shù)平臺,是谷歌文件系統(tǒng)[2]和MapReduce編程模型的開源實現(xiàn)[2]。然而如何使用Hadoop技術(shù)進行海量遙感數(shù)據(jù)的處理,是一個值得研究的問題。為了對海量遙感數(shù)據(jù)進行有效的管理,需開發(fā)一套基于Hadoop集群的云存儲系統(tǒng)。該系統(tǒng)可對海量遙感數(shù)據(jù)進行管理,與用戶進行交互,上傳和下載海量遙感數(shù)據(jù)文件。但是現(xiàn)有的HDFS管理工具無法高效地進行可視化管理,基于此,本文設(shè)計實現(xiàn)了一套可視化管理系統(tǒng),旨在提高HDFS可視化管理的水平,方便用戶使用。
1 研究背景
1.1 Hadoop生態(tài)系統(tǒng)
為了搭建國產(chǎn)軟硬件環(huán)境下的云存儲平臺,本文采用Hadoop作為基礎(chǔ)軟件。該平臺目前已經(jīng)發(fā)展成為包括HDFS[3]、分布式編程模型MapReduce、數(shù)據(jù)庫(HBase、Cassandra)、數(shù)據(jù)倉庫Hive和數(shù)據(jù)流處理語言Pig在內(nèi)的完整的生態(tài)系統(tǒng)(Ecosystem)[4]。系統(tǒng)結(jié)構(gòu)框架如圖1所示。從某種程度上可以說,Hadoop已經(jīng)成為大數(shù)據(jù)處理工具事實上的標準。
HDFS是Hadoop生態(tài)系統(tǒng)的核心子項目之一,基于流數(shù)據(jù)模式和處理超大文件的需求開發(fā),可以處理TB(TeraByte)甚至是PB(PeteByte)級別的數(shù)據(jù),對硬件要求比較低,容錯性好,可靠性高。Hadoop2.0之前的版本,HDFS集群通常包括一個NameNode(主節(jié)點)和若干個DataNode(從節(jié)點)[5]。NameNode管理命名空間,維護整個文件系統(tǒng)的文件目錄樹及這些文件的索引目錄。DataNode是文件系統(tǒng)工作節(jié)點,用來執(zhí)行具體的任務(wù)。同時,它可以通過心跳(Heartbeat)定時向NameNode發(fā)送所存儲的文件塊信息[6]。
1.2 HDFS常見管理工具
現(xiàn)有HDFS的管理工具可以分為三類:HDFS自帶的命令行工具、HDFS應(yīng)用程序接口(API)和基于Web的HDFS管理工具。
HDFS自帶的命令行工具運行在操作系統(tǒng)的shell終端,由一系列的命令組成。其優(yōu)點是簡單快捷,無需安裝其他軟件;缺點是可視化程度不高,各種命令比較多,用戶需要具備專業(yè)的水平才能完全掌握。常見的HDFS命令如表1所示[7]。
HDFS應(yīng)用程序接口是Hadoop為第三方軟件提供的交互接口。這種方法的優(yōu)點是操作簡單,對用戶專業(yè)水平要求不高;缺點是只有在安裝了Eclipse IDE的機器上才能運行。HDFS中提供的API功能如表2所示。
基于Web的管理工具研究是在前兩種工具的基礎(chǔ)上開發(fā)而來的,黃文依等人[7]在研究HDFS架構(gòu)的基礎(chǔ)上,設(shè)計實現(xiàn)了基于Web的HDFS可視化文件訪問系統(tǒng)。其優(yōu)點是操作簡便快捷,易于部署;缺點是功能相對簡單,只是實現(xiàn)了基本的功能。此外,用戶通過瀏覽器可以直接訪問Hadoop集群的50030端口,但是這種方式只可以瀏覽顯示HDFS文件系統(tǒng),用戶無法與HDFS交互。
通過以上內(nèi)容可以看出,HDFS現(xiàn)有的可視化系統(tǒng)可視化程度不高,用戶友好程度相對不高。如何設(shè)計和實現(xiàn)用戶界面友好的HDFS可視化管理系統(tǒng),是一個需要解決的問題。
2 HDFS可視化管理系統(tǒng)的設(shè)計
2.1 系統(tǒng)功能設(shè)計
本文設(shè)計的HDFS可視化管理系統(tǒng)一方面完成文件(夾)與Hadoop集群之間的交互,另一方面可對集群的一些基本信息進行顯示。HDFS可視化系統(tǒng)的功能從整體上包含文件管理模塊和集群信息模塊。其中文件管理模塊負責HDFS文件信息的顯示、目錄信息的管理以及HDFS文件與本地文件之間的交互,包括文件上傳、文件下載[8]和文件刪除等功能。集群信息模塊可以顯示Hadoop集群的節(jié)點信息、集群的存儲容量和提供幫助信息等。HDFS可視化系統(tǒng)的功能結(jié)構(gòu)圖如圖2所示。
2.2 系統(tǒng)界面設(shè)計
HDFS可視化管理系統(tǒng)設(shè)計的主界面包括4個區(qū)域:標題欄、工具欄、HDFS目錄顯示區(qū)域和文件信息顯示區(qū)域。其中標題欄包括文件管理按鈕和集群信息管理按鈕,通過這兩個按鈕可以調(diào)用文件管理模塊和集群信息管理模塊。HDFS目錄顯示區(qū)域類似于Windows的資源管理器,以目錄樹的形式顯示HDFS文件系統(tǒng)信息。文件信息顯示區(qū)域用來顯示選中的文件的基本信息。
HDFS系統(tǒng)可視化界面采用Java Swing[9]組件設(shè)計開發(fā)。界面使用到的控件包括JTree、JLabel、JText、JPanel等。其中,JTree用來管理HDFS文件系統(tǒng)目錄;JLabel顯示文件基本信息;JPanel用來進行控件的管理,當做容器用來控制界面的布局;JButtonItem用來右鍵顯示命令。此外標準對話框用來顯示提示信息。
3 HDFS可視化管理系統(tǒng)的實現(xiàn)
3.1 開發(fā)及運行環(huán)境
HDFS可視化系統(tǒng)開發(fā)工具為Eclipse和OpenJDK 1.6.0??紤]到HDFS需要在Hadoop集群搭建的基礎(chǔ)上才能運行,本文首先搭建了一個Hadoop集群。本文搭建的Hadoop集群采用0.20.2版本,包括1個NameNode節(jié)點和6個DataNode節(jié)點。目前集群配置存儲空間大小為1.19 TB,包括21 628個文件和目錄,21 067個文件塊,塊大小為128 MB;HDFS文件備份數(shù)量采用默認的3個。集群HDFS信息如圖3所示。
3.2 系統(tǒng)開發(fā)流程
系統(tǒng)開發(fā)流程如圖4所示。開發(fā)環(huán)境的操作系統(tǒng)采用Kylin Linux操作系統(tǒng),OpenJDK版本是1.6.0。在開發(fā)環(huán)境中使用Eclipse進行界面和功能設(shè)計,編寫代碼并且封裝成JAR包以方便部署。開發(fā)工具采用Eclipse 3.5版本。
3.3 系統(tǒng)功能測試
為了驗證HDFS可視化系統(tǒng)的可靠性,對系統(tǒng)功能進行測試。目前用戶數(shù)量為10人,經(jīng)過擴展可以添加更多用戶。Hadoop集群信息如圖5所示,HDFS中某一系統(tǒng)的文件信息如圖6所示,文件上傳功能如圖7所示,文件下載功能如圖8所示。
4 結(jié)論
本文針對Hadoop分布式文件系統(tǒng)缺乏界面友好的可視化管理工具的問題,設(shè)計并實現(xiàn)了一個HDFS可視化管理系統(tǒng)。該管理系統(tǒng)核心功能通過封裝HDFS命令轉(zhuǎn)換為Java可以識別的對象實現(xiàn)。該系統(tǒng)已經(jīng)在基于國產(chǎn)軟硬件環(huán)境的云存儲系統(tǒng)中得到應(yīng)用,經(jīng)過實驗證明,該系統(tǒng)提供了一個簡便易操作的HDFS可視化管理工具,提高了云計算的數(shù)據(jù)管理水平。下一步研究的重點是設(shè)計實現(xiàn)基于此管理系統(tǒng)的云計算平臺,為集群外的節(jié)點訪問和數(shù)據(jù)處理提供服務(wù)。
參考文獻
[1] Apache Hadoop[EB/OL].(2009-09-12)[2014-10-15].http://hadoop.apache.org/.
[2] GHEMAWAT S, GOBIOFF H, LEUNG S T. The Google file system[C]. ACM SIGOPS Operating Systems Review,ACM, 2003,37(5):29-43.
[3] Hadoop Distributed Filesystem[EB/OL].(2008-12-13)[2014-10-15].http://hadoop.apache.org/hdfs.
[4] 趙書蘭.典型Hadoop云計算[M].北京:電子工業(yè)出版社,2013.
[5] 蔡斌,陳湘萍.Hadoop技術(shù)內(nèi)幕:深入解析Hadoop Common和HDFS架構(gòu)設(shè)計與實現(xiàn)原理[M].北京:機械工業(yè)出版社,2013.
[6] 陸嘉恒.Hadoop實戰(zhàn)(第2版)[M].北京:機械工業(yè)出版社,2012.
[7] 黃文依,王勁松,林勝.HDFS可視化操作系統(tǒng)研究與實現(xiàn)[J].天津理工大學學報,2012,28(1):31-34.
[8] 曹寧,吳忠海,劉宏志,等.HDFS下載效率的優(yōu)化[J].計算機應(yīng)用,2010,30(8):2060-2065.
[9] CADENHEAD R S, LEMAY L.21天學通Java 6(第五版)[M].袁國忠,張劼,譯.北京:人民郵電出版社,2008.